Feldreihenfolge in mySQL ändern
Sebastian Becker
- datenbank
Hallo,
wie kann ich mit üblichen Hilfsmitteln wie z.B. phpMyAdmin die Reihenfolge der Felder einer mySQL-Datenbank ändern - so soll z.B. die ID an die erste Stelle wandern.
Ich weiß, daß dies für die Funktionalität unerheblich ist - es macht die Sache aber übersichtlicher und das Handling einfacher.
Eine automatische alphabetische Sortierung würde auch reichen ...
Danke für alle Hinweise, Grüße,
Sebastian Becker
你好 Sebastian,
wie kann ich mit üblichen Hilfsmitteln wie z.B. phpMyAdmin die
Reihenfolge der Felder einer mySQL-Datenbank ändern - so soll z.B.
die ID an die erste Stelle wandern.
Neu anlegen.
Ich weiß, daß dies für die Funktionalität unerheblich ist - es macht
die Sache aber übersichtlicher und das Handling einfacher.
Ansichtssache…
再见,
克里斯蒂安
你好, 克里斯蒂安,
Neu anlegen.
also ich habe jetzt einen Dump mit der alten Reihenfolge. Wenn ich jetzt die Datenbank mit der gewünschten Feldreihenfolge neu anlege und den Dump importiere, bleibt also die neue Feldreihenfolge erhalten? Das wäre dann eine Lösung - aber umso umständlicher, je mehr Felder man hat.
Geht es nicht einfacher? Eine Option zum Verschieben von Feldern wäre auch in phpMyAdmin nicht schlecht. Gibt es kein Tool, das sowas kann?
Danke, Grüße,
Sebastian
你好 Sebastian,
Neu anlegen.
also ich habe jetzt einen Dump mit der alten Reihenfolge. Wenn ich jetzt
die Datenbank mit der gewünschten Feldreihenfolge neu anlege und den
Dump importiere, bleibt also die neue Feldreihenfolge erhalten?
Natürlich.
Geht es nicht einfacher? Eine Option zum Verschieben von Feldern wäre
auch in phpMyAdmin nicht schlecht. Gibt es kein Tool, das sowas kann?
Das scheitert daran, dass MySQL das nicht kann.
再见,
克里斯蒂安
你好, 克里斯蒂安,
Natürlich.
Also meine aus dem Dump der alten Datenbank stammenden INSERTS sehen jetzt im Prinzip so aus ...
INSERT INTO gallery
VALUES ('Strasse 1', 'Vorname 1', 'Ort 1', 'Name 1');
INSERT INTO gallery
VALUES ('Strasse 2', 'Vorname 2', 'Ort 2', 'Name 2');
...
Die neue Reihenfolge soll aber lauten ...
'Name', 'Vorname', 'Ort', 'Strasse'
Jetzt habe ich ein Problem: Die Werte werden in die falschen Felder eingesetzt - wat nu?
Danke, Grüße,
Sebastian
你好, 克里斯蒂安,
Natürlich.
Also meine aus dem Dump der alten Datenbank stammenden INSERTS sehen jetzt im Prinzip so aus ...
INSERT INTO
gallery
VALUES ('Strasse 1', 'Vorname 1', 'Ort 1', 'Name 1');
INSERT INTOgallery
VALUES ('Strasse 2', 'Vorname 2', 'Ort 2', 'Name 2');
...Die neue Reihenfolge soll aber lauten ...
'Name', 'Vorname', 'Ort', 'Strasse'
Jetzt habe ich ein Problem: Die Werte werden in die falschen Felder eingesetzt - wat nu?
Danke, Grüße,
Sebastian
Reihenfolge ändern, bzw im Insert-into bei der Tabelle auch angeben.
Insert into gallery(name,vorname,ort,strasse)
select name,vorname,ort,strasse from oldgallery;
Das Select am Schluss erspart dir den Käs mit den ganzen Values. Ein Statement für alle Einträge, statt ein Statement pro Eintrag.
MfG
Mero
echo $begrüßung;
wie kann ich mit üblichen Hilfsmitteln wie z.B. phpMyAdmin die Reihenfolge der Felder einer mySQL-Datenbank ändern
Hast du schon mal im MySQL-Handbuch nachgesehen, ob der MySQL-Dialekt eine solche Möglichkeit bietet?
echo "$verabschiedung $name";
Hallo, dedlfix,
Hast du schon mal im MySQL-Handbuch nachgesehen, ob der MySQL-Dialekt eine solche Möglichkeit bietethttp://dev.mysql.com/doc/refman/5.0/en/alter-table.html
Ja, und mySQL sieht diese Möglichkeit wohl nicht vor - daher suche ich nach einer Methode, um diese fehlende Funktionalität zu ersetzen.
Ich könnte ja zum Beispiel einen CSV-Dump machen, die Felder in Excel verschieben und die Daten dann wieder nach mySQL schaufeln.
Leider kann phpMyAdmin aber so viel ich weiß keine CSV-Dateien importieren ...
Any ideas?
Danke, Grüße,
Sebastian
echo $begrüßung;
Hast du schon mal im MySQL-Handbuch nachgesehen, ob der MySQL-Dialekt eine solche Möglichkeit bietet?
Ja, und mySQL sieht diese Möglichkeit wohl nicht vor
Dann hast du das Handbuch nicht oder nicht richtig gelesen.
ALTER TABLE tbl_name MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
Das Handbuch sagt zwar was von "ab MySQL 5.0 möglich", ein Userkommentar behauptet jedoch dass es schon seit 4.0.1 möglich ist. Das bestätigt auch das gleiche Kapitel in einer ältere Version des Handbuchs.
echo "$verabschiedung $name";
Hallo,
Dank der eingegangenen Hinweise hat es jetzt geklappt (Lösungsweg siehe unten), Danke!
Grüße,
Sebastian
CREATE TABLE new\_gallery
(
id
int(11) NOT NULL auto_increment,
file\_name
varchar(50) default NULL,
object\_name
varchar(50) default NULL,
description\_1
varchar(50) default NULL,
description\_2
varchar(255) default NULL,
metatext
varchar(50) default NULL,
object\_name\_en
varchar(50) default NULL,
description\_1\_en
varchar(50) default NULL,
description\_2\_en
varchar(50) default NULL,
metatext\_en
varchar(50) default NULL,
object\_name\_tk
varchar(50) default NULL,
description\_1\_tk
varchar(50) default NULL,
description\_2\_tk
varchar(50) default NULL,
metatext\_tk
varchar(50) default NULL,
category
varchar(50) default NULL,
object\_width
int(11) default '0',
object\_height
int(11) default '0',
object\_length
int(11) default '0',
mm
int(11) default '0',
price\_euro
varchar(50) default NULL,
sold
int(11) default '0',
made\_year
int(11) default '0',
photographer
varchar(50) default NULL,
sequence
int(11) default '0',
publish
int(11) default '0',
KEY ID
(id
)
) TYPE=MyISAM;
INSERT INTO new\_gallery
SELECT id
, file\_name
, object\_name
, description\_1
, description\_2
, metatext
, object\_name\_en
, description\_1\_en
, description\_2\_en
, metatext\_en
, object\_name\_tk
, description\_1\_tk
, description\_2\_tk
, metatext\_tk
, category
, object\_width
, object\_height
, object\_length
, mm
, price\_euro
, sold
, made\_year
, photographer
, sequence
, publish
FROM gallery
;
DROP TABLE gallery
;
ALTER TABLE new\_gallery
RENAME gallery
;