Daten-Ex- und Import mit Oracle und PostgreSQL

Werbung
Daten-Ex- und Import mit Oracle und
PostgreSQL
Holger Jakobs – [email protected]
2004-09-07
Inhaltsverzeichnis
1 Grund für Daten-Im- und -Exporte
1
2 Werkzeuge
2.1 Export
2.2 Import
2.3 Export
2.4 Import
2.5 Import
2.6 Export
1
2
3
3
4
4
4
mit pg_dump von PostgreSQL
nach PostgreSQL . . . . . . .
mit TOra . . . . . . . . . . .
mit TOra . . . . . . . . . . .
mit SQL*Loader von Oracle .
mit b.i.b.-Tools . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 Grund für Daten-Im- und -Exporte
Daten-Ex- und -Importe werden aus verschiedenen Gründen gemacht. Hier einige Beispiele:
• Datensicherung: Statt die Datenbank-Dateien direkt zu sichern, kann man auch
die exportierten Daten sichern. Diese lassen sich sehr oft gut komprimieren, weil sie
reine Textdaten sind
• Datenübermittlung: Um den Datenbestand von einer Datenbank auf eine andere
(anderes DBMS, neue Installation wegen Versionswechsel oder anderer Rechner) zu
übertragen, eignet sich ein exportierter Datenbestand sehr gut.
• Restrukturierung: Wenn man eine Datenbank restrukturiert, ist es oft praktisch,
den alten Bestand vorher zu exportieren – ggf. schon in einem Format, das an die
neue, etwas anders strukturierte Datenbank angepasst ist.
2 Werkzeuge für den Daten-Ex-/-Import
Den Daten-Ex- und -Import kann man mit verschiedenen Werkzeugen durchführen. Es gibt
kein für alle Datenbanksysteme geeignetes Tool. Bei einigen DBMS ist alles Notwendige im
Lieferumfang, oft wird man im Open Source Bereich fündig. In diesem Dokument werden
weiter unten erläutert:
1
2.1 Export mit pg_dump von PostgreSQL
2 WERKZEUGE
Tabelle 1: wichtige Optionen von pg dump
-a
--data-only
-c
-C
-d
--clean
--create
--inserts
-D --column-inserts
-f
-o
-s
-t
--filename=filename
--oids
--schema-only
--table=tabelle
-v
-x
--verbose
--no-privileges
nur Daten ausgeben, kein Datenbankschema (CREATE
TABLE)
Datenbank vor dem Erzeugen löschen (DROP TABLE)
Datenbank-Erzeugungskommando einbauen
Daten in Form von INSERT-Kommandos ausgeben,
nicht in Form von COPY-Kommandos, weil letztere
PostgreSQL-spezifisch sind
Daten mit Attributnamen in INSERT-Kommandos ausgeben
Ausgabe in Datei statt auf stdout
OID (object identifiers) mit ausgeben
nur Datenbankschema ausgeben, keine Daten
Nur genannte Tabelle ausgeben, nicht die gesamte Datenbank
ausführliche Ausgabe
keine Rechte (GRANT/REVOKE) ausgeben
• pg_dump – im Lieferumfang von PostgreSQL
• TOra – Open Source Tool für Oracle
• SQL*Loader von Oracle – nur Import
Information zu den Oracla-Utilities Export, Import und SQL*Loader finden Sie unter
• Export: http://www.bg.bib.de/Bibliothek/oracle/server.817/a76955/ch01.htm
• Import: http://www.bg.bib.de/Bibliothek/oracle/server.817/a76955/ch02.htm
• SQL*Loader: http://www.bg.bib.de/Bibliothek/oracle/server.817/a76955/ch03.htm
Export und Import verwenden ein binäres Format, das nur von diesen Programmen verwendet werden kann. Um Daten in einem lesbaren Format zu importieren, das von anderen
Systemen generiert wurde, ist SQL*Loader zu benutzen.
2.1 Export mit pg_dump von PostgreSQL
pg_dump gehört zum Lieferumfang von PostgreSQL und ist das Standardwerkzeug für den
Datenexport. Es ist ein einfaches, aber flexibles Kommandozeilenprogramm. Die Aufrufsyntax ist pg_dump [ Optionen ] Datenbankname
Die wichtigsten Optionen von pg_dump werden in Tabelle 1 erläutert.
2
2 WERKZEUGE
2.2 Import nach PostgreSQL
Abbildung 1: Startbildschirm von DB-Extraction/Compare
2.2 Import nach PostgreSQL
Sofern die Daten als INSERT-Statements vorliegen, kann man sie einfach mit psql ausführen, indem man sie per Pipe übermittelt, die Eingabe auf psql umlenkt oder im psql das
Kommando \i dateiname verwendet.
Um Daten aus anderen ASCII- oder Binär-Dateien zu importieren, verwendet man das
copy-Kommando von psql. Ein Beispiel hierzu ist im Dokument Das Erzeugen und Füllen
”
einer PostgreSQL-Datenbank“ enthalten.
2.3 Export mit TOra
TOra eignet sich wegen seiner grafischen Oberfläche gut für das interaktive Arbeiten. Um
regelmäßig auf dieselbe Art und Weise Daten zu ex- oder importieren, ist es weniger geeignet, denn dazu ist zuviel Handarbeit bei jedem Vorgang erforderlich. Dann muss man auf
scriptfähige Tools umsteigen, die von der Kommandozeile aus aufgerufen werden können.
Zum Daten-Ex- und -Import wird das Tool DB-Extraction/Compare“ verwendet, das
”
Sie aus dem Tools-Menü oder direkt über das nebenstehend abgebildete Symbol aufrufen
können.
Die Abbildung 1 zeigt den Startbildschirm von DB-Extraction/Compare. Wählen Sie
hier die Option Extract“. Die in der zweiten Spalte aufgeführten Optionen bedeuten, dass
”
3
2.4 Import mit TOra
2 WERKZEUGE
bestimmte Dinge in die Ausgabe mit aufgenommen werden (nicht alle Optionen werden
hier erläutert), siehe Tabelle 2 auf der nächsten Seite.
In der zweiten Spalte wird das zu exportierende Schema ausgewählt. Erfolg ist nur für
Ihr eigenes Schema garantiert, weil Sie bei den anderen wohl keine entsprechenden Rechte
haben. Aus Ihrem Schema können Sie mittels Include objects“ diejenigen Tabellen und
”
Sichten auswählen, Sie sie extrahieren möchten , siehe Abbildung 2 auf der nächsten Seite.
Die ausgewählten Objekte sind mit einem Häkchen gekennzeichnet.
Den zweiten Reiter mit der Aufschrift Resize“ ignorieren wir. Durch Anklicken des grü”
nen Pfeils (wie bei Abfragen) starten Sie den Extraktionslauf. Ist dieser gut gegangen, so
erscheint jetzt der dritte Reiter Result“ nicht mehr deaktiviert, sondern kann ausgewählt
”
werden.
Die erzeugten Insert-Kommandos können als Datei gespeichert oder auch direkt aus diesem
Fenster heraus ausgeführt werden. Dazu sind innerhalb des Fensters die gleichen StartKnöpfe vorhanden wie im Worksheet.
Leider funktioniert bei der Version 1.0.0 von TOra das Extrahieren von Datendefinitionskommandos nicht ordnungsgemäß, sondern erzeugt immer eine Fehlermeldung. Zur Zeit
können wir es also nur zum Extrahieren von Daten benutzen.
2.4 Import mit TOra
Sofern die Daten als INSERT-Statements vorliegen, kann man sie einfach ins TOraWorksheet laden und dann ausführen. Andere Datenformate kann TOra in der Version
1.0.0 nicht lesen, so dass man hier auf andere Tools, z. B. SQL*Loader, zurückgreifen
muss.
2.5 Import mit SQL*Loader von Oracle
Die Abbildung 4 auf Seite 6 zeigt eine Übersicht über den Ablauf bei Verwendung des
SQL*Loaders. Es können für den Import fast beliebige Datenformate verwendet werden,
die allerdings beschrieben werden müssen. äheres hierzu ist in der Online-Dokumentation
zu Oracle beschrieben, URL siehe oben in diesem Dokument.
Allerdings eignet sich der Loader – wie der Name schon sagt – nur zum Laden von Daten
(Import), nicht zum Entladen (Export).
2.6 Export mit b.i.b.-Tools
Im b.i.b. Bergisch Gladbach steht ein in Tcl/Tk (http://www.tcl.tk) geschriebenes Tool
zum Datenexport (ohne Datendefinition, also nur Tabelleninhalte) für Oracle und PostgreSQL zur Verfügung. Es ist unter Linux im b.i.b.-Menü für Datenbanken enthalten. Bei
Oracle ist die Eingabe des Passwords erforderlich.
Aus den angezeigten Tabellen sind die zu exportierenden auszuwählen, siehe auch Abbildung 5 auf Seite 7 Das Zielverzeichnis kann frei bestimmt werden. Für jede Tabelle wird
eine gleichnamige Datei mit der Erweiterung .sql erzeugt, die die INSERT-Kommandos
enthält.
4
2 WERKZEUGE
2.6 Export mit b.i.b.-Tools
Tabelle 2: wichtige Optionen beim TOra-Datenexport
Option
DDL
In die Ausgabe wird mit aufgenommen:
Datendefinitionen, d. h. die CREATE TABLEKommandos und die folgenden Teilmengen davon,
sofern ebenfalls ausgewählt
constraints
Definition von Constraints (Primär-/Fremdschlüssel, Check-Constraints)
indexes
Definition von zusätzlichen Indexen, die zur
Performance-Optimierung eingerichtet wurden
grants
Kommandos zur Vergabe von Rechten
comments
Kommentare zu den Datenbank-Objekten
content of tables Tabelleninhalt
generated schema none“ bedeutet, dass keine Schema-Angaben ein”
gefügt werden, same“ fügt die Schema-Angaben
”
des aktuellen Schemas ein
Abbildung 2: Auswahl der zu extrahierenden Objekte
Abbildung 3: Ergebnis der Extraktion
5
2.6 Export mit b.i.b.-Tools
2 WERKZEUGE
Abbildung 4: Übersicht über SQL*Loader (aus der Oracle-Doku)
Das Ausführen dieser Kommandos ist im Vergleich zum Laden mit anderen Tools zwar
nicht sehr schnell, aber es ist eine gut definierte, vom Datenbanksystem unabhängige
Schnittstelle. Außerdem werden alle Plausibilitäts- und Konsistenzprüfungen wie bei jeder anderen Eingabe auch durchgeführt.
$Id: DatenExport.tex,v 1.4 2004/09/07 05:31:12 hj Exp $
6
2 WERKZEUGE
2.6 Export mit b.i.b.-Tools
Abbildung 5: b.i.b.-Tool zum Datenexport
7
Herunterladen