Sebastian Becker: Feldreihenfolge in mySQL ändern

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

  1. 你好 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…

    再见,
     克里斯蒂安

    --
    Neue Hardware eingebaut | Der dritte mir bekannte Block-Nutzer
    Die Summe zweier gerade Primzahlen ist immer eine Quadratzahl.
    http://wwwtech.de/
    1. 你好, 克里斯蒂安,

      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

      1. 你好 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.

        再见,
         克里斯蒂安

        --
        Neue Hardware eingebaut | Der dritte mir bekannte Block-Nutzer
        Wer sich zu überschwänglich freut, wir später Grund zum Weinen haben.
        http://wwwtech.de/
        1. 你好, 克里斯蒂安,

          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

          1. 你好, 克里斯蒂安,

            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

            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

  2. 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";

    1. 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

      1. 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";

  3. Hallo,

    Dank der eingegangenen Hinweise hat es jetzt geklappt (Lösungsweg siehe unten), Danke!

    Grüße,

    Sebastian

    Change the Order of Columns in a Table

    http://dev.mysql.com/doc/refman/5.0/en/change-column-order.html

    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;