Kopieren einer Tabelle mit Daten innerhalb der gleichen Oracle-Datenbank
1. Oracle bietet eine komfortable Syntax, mit der sich die oben genannten Szenarien umsetzen lassen. Mithilfe des Befehls CREATE TABLE … AS SELECT … können Sie eine doppelte Tabelle
innerhalb desselben Datenbankschemas erstellen. Um eine exakte Kopie der Tabelle unter Beibehaltung der Tabellenstruktur und aller Daten zu erstellen, führen Sie die folgende Abfrage aus:
CREATE TABLE new_table_name
AS
SELECT *
FROM existing_table_name;
2. Wenn Sie das Kopieren der Daten auf bestimmte Spalten beschränken wollen, geben Sie die Spaltennamen nach SELECT wie folgt an:
CREATE TABLE new_table_name
AS
SELECT column_name1,column_name2
FROM existing_table_name;
3. Wenn Sie bereits eine Tabelle erstellt haben und die Daten aus der bestehenden Tabelle in diese einfügen möchten, führen Sie Folgendes aus:
INSERT INTO new_table_name
SELECT *
FROM existing_table_name;
Kopieren einer Tabelle ohne Daten innerhalb der gleichen Oracle-Datenbank
4. In einigen Fällen möchten Sie vielleicht die Tabellenstruktur kopieren, aber die Daten weglassen. In ähnlicher Weise können Sie den Befehl CREATE TABLE … AS SELECT … verwenden, aber dieses Mal müssen Sie ihn ändern, indem Sie die WHERE-Klausel hinzufügen, die falsch ist und folglich keine Daten auswählt, zum Beispiel:
CREATE TABLE new_table_name
AS
SELECT *
FROM existing_table_name WHERE 1=5;
Kopieren einer Tabelle von einer Oracle-Datenbank in eine andere
5. Um eine Tabelle von einem Datenbankschema in ein anderes zu kopieren, müssen Sie den Befehl SQL*Plus COPY verwenden.
Dieser leistungsstarke Befehl ermöglicht es Ihnen, Daten zwischen verschiedenen Servern zu kopieren. Wir werden uns jedoch auf das Kopieren einer Tabelle zwischen verschiedenen Datenbankschemas in Oracle konzentrieren. Die grundlegende Syntax des Befehls sieht wie folgt aus:
COPY FROM source_database TO target_database action -
destination_table (column_name, column_name, -
column_name ...) USING query;
Lassen Sie uns die wichtigsten Voraussetzungen für die Verwendung dieses Befehls definieren:
-
Sie müssen Zugriff auf die angegebenen Tabellen haben und die gültigen Anmeldeinformationen für die lokalen und entfernten Datenbanken
in der FROM- und/oder TO-Klausel kennen.
-
Sie können die neuen Namen für die Spalten in der Zieltabelle angeben,
andernfalls erhalten sie standardmäßig die gleichen Namen.
-
Sie haben die Wahl zwischen vier Aktionen — REPLACE, CREATE, INSERT, oder APPEND — je nachdem,
welche Aktion für Ihren speziellen Fall geeignet ist.
-
In der USING-Klausel müssen Sie eine Abfrage schreiben, mit der Sie die zu kopierenden Daten angeben. Hier können Sie jedes Typ von SELECT verwenden.
Um eine neue Tabelle zu erstellen und dann die Daten zu kopieren, verwenden Sie CREATE;
um die erstellte Tabelle mit Daten zu füllen, verwenden Sie INSERT;
um die erstellte Tabelle zusammen mit ihrem Inhalt zu ersetzen, verwenden Sie REPLACE.
Außerdem können Sie APPEND verwenden, das in beide Richtungen funktioniert: Wenn Sie eine neue Tabelle erstellt haben, wird sie mit Daten gefüllt; wenn nicht,
wird zuerst eine Tabelle erstellt und dann die erforderlichen Daten eingefügt.
Sehen wir uns ein Beispiel für den COPY-Befehl an, der drei Spalten aus der Quelltabelle kopiert und nur die Zeilen kopiert, in denen der Wert EMPLOYEE_ID größer als 50 ist:
COPY FROM EMPLOYEES@DB -
REPLACE DBCOPY1 -
USING SELECT FIRST_NAME, LAST_NAME, SALARY -
FROM DETAILS_VIEW -
WHERE EMPLOYEE_ID > 50;