sql >> Database >  >> RDS >> Oracle

Oracle:exporteer een tabel met blobs naar een .sql-bestand dat opnieuw kan worden geïmporteerd

Ik denk niet dat dit mogelijk is met SQL Developer (maar dan gebruik ik het niet vaak).

De SQL-client die ik gebruik - SQL Workbench/J - kan dit.

Er zijn verschillende manieren om deze gegevens te exporteren.

Genereer een eigen script

Het kan een SQL-script maken dat een speciale (toolspecifieke) notatie gebruikt om naar een extern bestand te verwijzen, zoiets als:

INSERT INTO images
  (name, data)
VALUES
  ('foobar', {$blobfile='blob_r1_c2.data'});
 

De bovenstaande instructie kan alleen opnieuw worden uitgevoerd met SQL Workbench. Het is niet compatibel met andere SQL-clients.

Gebruik utl_raw

Een ander alternatief is om een ​​"blob literal" te gebruiken, maar vanwege Oracle's limiet van 4000 bytes voor een letterlijke karakter, werkt dit alleen voor echt kleine blob-waarden:

INSERT INTO images
  (name, data)
VALUES
  ('foobar', to_blob(utl_raw.cast_to_raw('......')));
 

waar het letterlijke teken voor de cast_to_raw aanroep zou de hexadecimale waarden van de BLOB bevatten. Omdat dit 2 tekens per "blob-byte" vereist, kun je daarmee geen BLOB's groter dan 2000 bytes aan. Maar die syntaxis zou werken voor bijna alle Oracle SQL-tools (als ze scripts met erg lange regels aankunnen).

SQL*Loader invoerbestand

Het derde alternatief is om de gegevens te exporteren naar een tekstbestand dat kan worden geïmporteerd met SQL*Loader:

Het tekstbestand zou zoiets als dit bevatten:

NAAM DATAfoobar blob_r1_c2.data

Samen met het volgende SQL*Loader-besturingsbestand:

OPTIES (skip=1)LOAD DATA CHARACTERSET 'WE8ISO8859P15'INFILE 'images.txt'APPENDINTO TABLE IMAGESFIELDS BEINDIGD DOOR '\t' TRAILING NULLCOLS( NAME, lob_file_data FILLER, DATA LOBFILE(lob_fileD_data)> 

Dit kan worden geladen met SQL*Loader en heeft dus geen SQL Workbench nodig om de gegevens te importeren.

Meer details staan ​​in de handleiding

Bewerken

Zoals Alex in zijn opmerking heeft opgemerkt, kun je ook een DataPump-export gebruiken - maar daarvoor moet je toegang hebben tot het bestandssysteem op de server. De bovenstaande oplossingen slaan allemaal de gegevens op de client op.



  1. MySql gebruiken met Entity Framework 4 en de Code-First Development CTP

  2. Het kantelpunt visualiseren met Plan Explorer

  3. Database maken in SQL Server met behulp van TSQL of GUI - SQL Server / TSQL-zelfstudie, deel 24

  4. Voorvertoning van documenten in Microsoft Access-formulier