Einleitung Die einfachste Lösung

Werbung
Betrifft
SQL*Plus und Copy
Autor
Peter Jensch
Art der Info
Technische Background Info (Mai 2005)
Quelle
Aus unserer Schulungs- und Beratungstätigkeit
Einleitung
Wie oft hatte man bereits die folgende Aufgabenstellung? Kopieren einer Tabelle ohne viel
Aufwand, einfache Syntax und wenn möglich sollten keine größere Schwierigkeiten
erwartet werden. Mit einfachsten Hilfsmitteln eine Tabelle reorganisieren oder Testdaten
einzelner Tabellen aus dem Produktiv-System ins Test-System oder Entwicklungs-System
kopieren. Zudem eine beliebte Fragestellung in unseren Oracle-Kursen.
Für die unterschiedlichen Vorgaben und Voraussetzungen stehen die verschiedensten
Tools und Funktionen zur Verfügung. Allerdings muß an dieser Stelle bemerkt werden: Es
eignet sich nicht jedes Tool für die unterschiedlichsten Vorgaben!
-
Export / Import
ALTER TABLE <table-name> move
Oracle-Package dbms_redefinition
CTAS (Create Table As Select)
Kostspielige Tools
Die einfachste Lösung
Gesucht wird eine einfache Möglichkeit eine Tabelle incl. Inhalt zu kopieren. Zusätzlich
soll der Kopiervorgang über Datenbanken hinweg funktionieren! Mit dem Oracle-Tool
SQL*Plus steht ein einfacher COPY-Befehl zur Verfügung. Der COPY Befehl ist kein SQLBefehl, d.h. die Funktion steht lediglich im Oracle-Tool SQL*Plus zur Verfügung.
Mit der Syntax-Beschreibung der Online-Hilfe erhält man einen Überblick über die
Funktionalität und die Möglichkeiten:
SQL*Plus starten, den connect durchführen und mit „help copy“ die Online-Hilfe
aktivieren:
SQL> help copy
COPY
----
COPY copies data from a query to a table in a local or remote
database.
COPY {FROM database | TO database | FROM database TO database}
{APPEND|CREATE|INSERT|REPLACE} destination_table
[(column, column, column, ...)] USING query
where database has the following syntax:
username[/password]@connect_identifier
Für den Kopiervorgang über Datenbanken hinweg ist lediglich der Connect über SQL*Net
notwendig. Ggf. die Definition der Datenbank in der TNSNAMES.ORA ergänzen und
schon geht’s los:
SQL> copy from scott/tiger@db10g –
>
to scott/tiger@db92 –
>
replace emp_copy using –
>
select * from emp;
Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 80. (long is 80)
Table EMP_COPY dropped.
Table EMP_COPY created.
14 rows selected from scott@db10g.
14 rows inserted into EMP_COPY.
14 rows committed into EMP_COPY at scott@db92.
Der Bindestrich am Ende einer Zeile definiert lediglich die Zeilenfortsetzung eines
SQL*Plus Befehls. Natürlich läßt sich der Befehl in eine Zeile schreiben.
Für einen schnellen und einfachen Daten- bzw. Wissens-Transfer, oder zu anderen
Themen finden Sie Informationen auf der Trivadis Webseite oder besuchen Sie einen
unserer Kurse ☺.
Peter Jensch
Trivadis GmbH
Peter Jensch
Max – Lang – Str. 59
70771 Leinfelden - Echterdingen
Internet: http://www.trivadis.com
Mail: [email protected]
Tel: +49 +711 90 36 32 30
Fax: +49 +711 90 36 32 59
Herunterladen