Oracle: export einer Tabelle mit blobs in ein .sql-Datei kann wieder importiert werden
Ich habe eine Tabelle "Bilder" mit zwei Bereichen:
- Name VARCHAR2
- Daten-BLOB
Ich würde gerne exportieren, die Tabelle ein .sql-Datei, die konnte ich importieren, die auf einem anderen system. Ich habe versucht, dies zu tun mit der "Datenbank entladen" - Assistenten der Oracle SQL Developer. Jedoch ist die generierte Datei enthält nur die Inhalte für die Namen, aber nicht die Daten. So nach dem importieren würde ich am Ende mit all den Namen, aber die Daten-Feld wäre null überall.
Ich würde wirklich lieber nur eine Datei (ich sah einige Beispiele enthalten, dass dumping die Daten zu einer Datei pro Feld auf die fs...)
Ist es möglich, erzeugen so ein script mit SQL-Developer? oder gibt es eine andere Möglichkeit/tool dazu?
- Sind Sie in der Lage data pump, export und import auf dem Server, anstatt von der SQL Developer-client?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass dies möglich ist, mit SQL Entwickler (aber dann ich benutze es nicht sehr oft).
Den SQL-client, den ich benutze - SQL Workbench/J - kann dies tun.
Gibt es mehrere Möglichkeiten, um diese Daten exportieren.
Erzeugen eine proprietäre Skript
Kann es schaffen, ein SQL-Skript, dass verwendet eine spezielle (Werkzeug-spezifisch) - notation auf eine externe Datei verwiesen, so etwas wie:
Obige Anweisung kann nur ausgeführt werden, mit SQL Workbench wieder. Es ist nicht kompatibel mit anderen SQL-client.
Verwenden utl_raw
Andere alternative ist die Verwendung eines "blob-wörtliche", sondern wegen Oracle ' s limit auf 4000 bytes für ein Zeichen-literal, das funktioniert nur für wirklich kleinen blob-Werte:
wo das Zeichen-literal für die
cast_to_raw
nennen würde, enthalten die hex-Werte der BLOB. Da diese 2 Zeichen pro "blob byte", Sie kann nicht mit BLOBs, die größer als 2000 Byte mit. Aber das würde die syntax funktioniert für fast alle Oracle-SQL-tools (wenn Sie behandeln können Skripts mit sehr langen Zeilen).SQL*Loader input-Datei
Die Dritte alternative ist der export der Daten in eine text-Datei, die importiert werden können mit SQL*Loader:
Text-Datei enthalten würde, so etwas wie dieses:
Zusammen mit der folgenden SQL*Loader control-Datei:
Diese kann geladen werden unter Verwendung von SQL*Loader und ist damit nicht benötigte SQL Workbench um die Daten zu importieren.
Mehr details sind im Handbuch: http://www.sql-workbench.net/manual/command-export.html
Bearbeiten
Als Alex hat darauf hingewiesen, in seinem Kommentar, Sie können auch eine DataPump-export - aber das erfordert, dass Sie Zugriff auf das Datei-system auf dem server. Die oben genannten Lösungen speichern die Daten auf dem client.
Thx für deine Antwort. Ich benutzte die Dritte alternative.
Zuerst habe ich heruntergeladen SQL Workbench/J. Dann benutzte ich den folgenden Befehl aus, um einen export:
Diese produziert eine Images.txt Datei-und viele Images_r*_c2.Daten-Dateien und Bilder.ctl-Datei.
Konnte ich dann den folgenden Befehl zum importieren:
Dies ist definitiv möglich, in SQL developer.
entsprechende Tabelle(N).
loader
eher als insert -, excel -, die wirnormalerweise verwenden.
Folgenden Schritte schaffen würde
sqlldr
control-Dateien und Daten-Dateien und auch diecreate table
ddl wenn Sie zuvor die option.Sie können diese verwenden, um importieren(sqlldr
) Daten in das Ziel.Ist das eine bessere Lösung und ist tragbar in Bezug auf die Gewinnung und Verteilung . Es gibt die Flexibilität, die der Bereitstellung von Komponenten, die bereitgestellt werden durch den code-repositories.
Hier ist ein link, der erklärt es Schritt für Schritt.
Exportieren Mehrerer BLOBs mit Oracle SQL-Developer
Wenn du unbedingt die Verwendung eines einzigen .sql-Datei zu importieren, BLOB-generieren Sie das Skript mithilfe von PL/SQL:
Sein Ausgang wird der BLOB-Inhalte codiert wie:
Die Sie laden können in eine bereits eingefügte Zeile mit PL/SQL:
Denken Sie daran, die daraus resultierenden .sql-Datei wird riesig sein.
SQL workbench verwendet ein spezielles Dateiformat für blob-Daten in zusätzlich zu .sql. Wenn man das akzeptieren kann solche Dateien, eine noch einfachere Lösung ist die Verwendung von Oracle Original import und export. (Es ist veraltet, aber im Gegensatz zu Oracle DataPump, es erfordert keine Zugriffsrechte auf dem server.)
Hier ist eine schöne tutorial auf der export-Teil.