Oracle, MySQL und MS SQL – Eine Tabelle kopieren

Eine häufig wiederkehrende Aufgabe in SQL Datenbanken ist es, eine bestehende Tabelle samt Inhalt zu kopieren. Sei es um etwas zu testen, die Daten weiter zu verwenden, Daten aus verschiedenen Tabellen zusammenzuführen usw.
Dummerweise ist die Syntax in den verschiedenen Datenbankmanagementsystemen immer ein wenig anders. Da ich nun schon mehrfach auf der Suche war, habe ich hier die Befehle für die für mich wichtigsten Systeme zusammengetragen.

Oracle

CREATE TABLE new_table_name AS (SELECT * FROM old_table);

Quelle: Techonthenet1. Hier finden sich auch Beispiele, wie sich nur ausgewählte Spalten kopieren lassen, die Tabelle ohne Dateninhalt erzeugt wird oder eine Tabelle aus mehreren Tabellen erzeugt werden kann.
Bitte beachten: Dieser Befehl kopiert keine Indizes oder Constraints. Diese müssen nachträglich hinzugefügt werden.

MySQL

Hier stehen uns zwei Varianten offen. Die erste Variante ist:

CREATE TABLE new_table_name AS SELECT * FROM old_table;

Sie erstellt, wie unter Oracle, eine Tabelle mit identischer Struktur und den Daten aus der Quelltabelle. Indizies und Constraints werden nicht mitkopiert.

Die zweite Variante erstellt uns eine identische Kopie einer Tabelle mit Indizes und Constraints, kopiert jedoch nicht die Daten mit. Hier müssen wir noch einen zweiten Befehl anschliessen.

/* Zuerst die Tabelle kopieren */
CREATE TABLE new_table_name LIKE old_table;
/* Nun die Daten in die Tabelle kopieren */
INSERT INTO new_table_name SELECT * FROM old_table;

Quelle: gilfster2

MS SQL

SELECT * INTO new_table_name FROM old_table;

Quelle: Caveman’s Blog3.
Bitte beachten: Dieser Befehl kopiert keine Indizes oder Constraints. Diese müssen nachträglich hinzugefügt werden.

  1. http://techonthenet.com/sql/tables/create_table2.php []
  2. http://gilfster.blogspot.com/2005/08/create-table-like.html []
  3. http://cavemansblog.wordpress.com/2009/06/09/sql-server-how-to-copy-a-table/ []

2 comments to Oracle, MySQL und MS SQL – Eine Tabelle kopieren

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>