Andy: (MYSQL) Tabelle kopieren

Hi!

ich möchte gerne eine neue Tabelle anlegen mit der gleichen struktur wie eine andere. Dies soll automatisch gehen.
Gibt es schon einen fertigen befehl für MYSQL? oder muss man das über PHP lösen? Wenn ja wie geht man da ran?

Danke!
Andy

  1. okay habe eine Lösung gefunden:

    CREATE TABLE tabelle1 SELECT * FROM tabelle

    gibt es auch eine möglichkeit nur die struktur zu übernehmen?

    ich habs halt nun so gelöst, dass ich die neue tabelle noch mit truncate leere

    Andy

    1. echo $begrüßung;

      CREATE TABLE tabelle1 SELECT * FROM tabelle

      gibt es auch eine möglichkeit nur die struktur zu übernehmen?

      CREATE TABLE tabelle1 SELECT * FROM tabelle WHERE 0

      echo "$verabschiedung $name";

    2. Kann es sein dass bei dieser Methode auto_increment und primärschlüssel nicht übernommen werden?

      Andy

      1. Hello,

        Kann es sein dass bei dieser Methode auto_increment und primärschlüssel nicht übernommen werden?

        Ja. Das ist die Voreinstellung
        http://dev.mysql.com/doc/mysql/en/create-table.html

        vielleicht hilft Dir auch
        http://dev.mysql.com/doc/mysql/en/show-create-table.html

        Dann müsstest Du das Create-Statement in einem Qurey abfragen und gleich wieder in ein nächstes Query einsetzen.
        Zwischendurch könntest Du noch Modifiaktionen vornehmen.

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
      2. echo $begrüßung;

        Kann es sein dass bei dieser Methode auto_increment und primärschlüssel nicht übernommen werden?

        Ja, weil es kein 1:1-Kopieren der Tabelle darstellt sondern ein Erstellen einer Tabelle aus der Ergebnismenge der SELECT-Abfrage. Wenn du also nur ein paar Felder statt * angibst, dann werden auch nur diese Felder in der neuen Tabelle sein.

        So gehts: Lass dir mit

        SHOW CREATE TABLE tabelle

        den Befehl zur Definition der Tabelle (CREATE TABLE ...) anzeigen, erstelle die Kopie damit und kopiere dann mit einem

        INSERT INTO tabelle1 SELECT * FROM tabelle

        die Daten.

        echo "$verabschiedung $name";

        1. echo $begrüßung;

          Nachtrag, weil's mir grad über den Weg lief:

          Seit MySQL 4.1 kann man Tabellen mit allem Drum und Dran so kopieren:

          CREATE TABLE new_tbl LIKE orig_tbl;

          echo "$verabschiedung $name";