Kopieren einer Tabelle mit Daten innerhalb derselben Oracle-Datenbank
Die Duplizierung einer Tabelle in Oracle ist in vielen Szenarien hilfreich. Zum Beispiel möchten Sie möglicherweise:
- Vor Updates oder Löschvorgängen eine Sicherung erstellen
- Abfragen an einer sicheren Kopie testen, ohne die Produktionsdaten zu beeinträchtigen
- Daten zwischen verschiedenen Umgebungen migrieren
- Berichtstabellen erstellen, die bestehende Tabellenstrukturen spiegeln
Alle diese Fälle erfordern, dass Sie wissen, wie Sie eine Tabellenduplizierung durchführen. Sehen Sie sich nun an, wie Sie dies tun können.
Kopieren einer Tabelle mit Daten mithilfe von SQL
Um eine Tabelle mit Daten in Oracle zu kopieren, verwenden Sie die folgende SQL-Syntax.
CREATE TABLE new_table_name
AS
SELECT *
FROM original_table;
Dieser Befehl erstellt eine neue Tabelle, die die Struktur und Daten des vorhandenen Objekts vollständig repliziert. Dies ist der häufigste Weg, um eine Tabelle in Oracle mit Daten unter Verwendung der CREATE TABLE AS SELECT Anweisung zu kopieren.
Wenn Sie nur bestimmte Spalten statt des gesamten Datensatzes kopieren müssen, geben Sie diese in der Abfrage an.
CREATE TABLE new_table AS
SELECT column_name1,column_name2
FROM original_table;
Falls die Zieltabelle bereits vorhanden ist und Sie nur die Daten duplizieren möchten, führen Sie den folgenden Befehl aus.
INSERT INTO new_table
SELECT *
FROM original_table;
Auf diese Weise können Sie eine Tabelle in Oracle entweder mit dem gesamten Datensatz oder nur mit den erforderlichen Teilen klonen, je nach Ihren Anforderungen.
Kopieren einer Tabelle in ein anderes Schema in Oracle
Manchmal müssen Sie eine Tabelle in ein anderes Schema duplizieren. Zum Beispiel beim Konsolidieren von Daten, beim Freigeben von Tabellen für ein anderes Team oder beim Vorbereiten einer separaten Umgebung zum Testen. Oracle ermöglicht es Ihnen, dies mithilfe von SQL-Befehlen zu erreichen und gleichzeitig die Datenintegrität zu gewährleisten.
Ein SQL-Beispiel mit INSERT INTO schema.table
Um Daten aus einer Tabelle in Ihrem aktuellen Schema in eine Tabelle in einem anderen Schema zu kopieren, verwenden Sie die folgende Syntax.
INSERT INTO target_schema.new_table
SELECT *
FROM source_schema.existing_table;
Dieser Ansatz setzt voraus, dass die Zieltabelle bereits im Zielschema vorhanden ist. Er überträgt alle Daten effizient, während die Quelltabelle intakt bleibt.
Erforderliche Benutzerberechtigungen
- Die
INSERT Berechtigung für die Zieltabelle oder das Schema
- Die
SELECT Berechtigung für die Quelltabelle
- Die
CREATE TABLE Berechtigung, wenn Sie die neue Tabelle im Zielschema erstellen
Ohne diese Berechtigungen verhindert Oracle die Operation und gewährleistet so einen sicheren und kontrollierten Datenzugriff über Schemas hinweg.
Durch die Kombination dieser Befehle mit den entsprechenden Berechtigungen können Sie zuverlässig Tabellenkopierungsvorgänge in Oracle über Schemas hinweg durchführen, was einen sicheren Datenaustausch und Tests ermöglicht, ohne Produktionstabellen zu beeinflussen.
Kopieren einer Tabelle ohne Daten innerhalb derselben Oracle-Datenbank
Um eine Tabelle ohne Daten in Oracle zu kopieren, verwenden Sie dieses SQL-Muster.
CREATE TABLE new_table_name
AS
SELECT *
FROM existing_table_name WHERE 1=0;
Mit diesem Befehl wird eine neue Tabelle erstellt, die ausschließlich die Struktur der Originaltabelle – einschließlich der Spalten, Datentypen und Standardwerte – übernimmt, ohne vorhandene Daten zu kopieren. Dies ist die einfachste Möglichkeit, eine Oracle-Tabelle ohne Daten zu kopieren. Sie wird häufig verwendet, wenn Sie eine leere Vorlage für Tests, Staging oder die Erstellung neuer Tabellen auf Grundlage bestehender Tabellenstrukturen benötigen.
Mit diesem Ansatz können Sie die Struktur einer Tabelle in Oracle effizient kopieren und sicherstellen, dass die neue Tabelle dem Original-Layout entspricht, während sie leer bleibt und für neue Daten bereit ist.
Kopieren einer Tabelle von einer Oracle-Datenbank in eine andere
Das Kopieren von Tabellen zwischen Datenbanken oder Schemas in Oracle kann für Tests, Berichterstellung oder Datenmigration erforderlich sein. Im Folgenden finden Sie die wichtigsten Ansätze, unterteilt in praktische Szenarien.
Kopieren einer Tabelle zwischen Schemas auf demselben Server
Um eine Tabelle von einem Schema zu einem anderen innerhalb derselben Oracle-Datenbank zu kopieren, verwenden Sie die folgende SQL-Syntax.
INSERT INTO new_schema.table
SELECT *
FROM old_schema.table;
Hinweis
Stellen Sie sicher, dass die Zieltabelle vorhanden ist und Sie die erforderlichen Berechtigungen haben, um den Tabellenkopierungsvorgang durchzuführen.
Dieser Befehl dupliziert alle Daten aus der Quelltabelle in eine Tabelle im Zielschema. Das ist eine einfache und effektive Methode, wenn sich beide Schemas auf demselben Datenbankserver befinden.
Kopieren einer Tabelle zwischen entfernten Oracle-Datenbanken
Beim Kopieren einer Oracle-Datenbanktabelle in eine Datenbank auf einem anderen Server können Sie Datenbanklinks oder Tools wie SQL*Plus oder dbForge Studio for Oracle verwenden. Ein Datenbank-Link ermöglicht es Ihnen, die entfernte Datenbank direkt in Ihrer SQL-Abfrage zu referenzieren und so eine Datenübertragung zu ermöglichen.
INSERT INTO remote_table@remote_db_link
SELECT *
FROM local_table;
Bevor Sie diesen Vorgang durchführen, stellen Sie sicher, dass Folgendes gegeben ist:
-
Gültige Anmeldedaten für beide Datenbanken
-
Entsprechende Berechtigungen (
SELECT für die Quelltabelle und INSERT für die Zieltabelle)
-
Netzwerkzugriff zwischen den Servern
Indem Sie diese Anweisungen befolgen, können Sie eine Tabelle in Oracle effizient in ein anderes Schema oder über Datenbanken hinweg kopieren, während Sie die Datenintegrität bewahren und Ausfallzeiten minimieren.