sql >> Database teknologi >  >> RDS >> Oracle

Oracle:eksporter en tabel med blobs til en .sql-fil, der kan importeres igen

Jeg tror ikke, det er muligt med SQL Developer (men så bruger jeg det ikke så tit).

SQL-klienten jeg bruger - SQL Workbench/J - kan gøre dette.

Der er flere måder at eksportere disse data på.

Generer et proprietært script

Det kan oprette et SQL-script, der bruger en speciel (værktøjsspecifik) notation til at referere til en ekstern fil, sådan som:

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

Ovenstående sætning kan kun udføres med SQL Workbench igen. Den er ikke kompatibel med nogen anden SQL-klient.

Brug utl_raw

Et andet alternativ er at bruge en "blob-literal", men på grund af Oracles begrænsning på 4000 bytes for en karakter-literal, virker dette kun for virkelig små klatværdier:

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

hvor tegnet bogstaveligt for cast_to_raw opkald ville indeholde hex-værdierne for BLOB. Da dette kræver 2 karakterer pr. "blob byte", kan du ikke håndtere BLOBs større end 2000 bytes med det. Men den syntaks ville fungere for næsten alle Oracle SQL-værktøjer (hvis de kan håndtere scripts med meget lange linjer).

SQL*Loader-inputfil

Det tredje alternativ er at eksportere dataene til en tekstfil, der kan importeres ved hjælp af SQL*Loader:

Tekstfilen ville indeholde noget som dette:

NAVN DATAfoobar blob_r1_c2.data

Sammen med følgende SQL*Loader kontrolfil:

MULIGHEDER (spring over=1)INDLÆS DATATEGNSÆT 'WE8ISO8859P15'INFIL 'images.txt'FØJ TIL TABELBILLEDSFELTER AFSLUTTES AF '\t' EFTERFØLGENDE NULLCOLS( NAME, lob_file_data FILLER, Elob_file_data FILLER, Elob_file_data FILLER, Elob_LOBeD()data

>

Dette kan indlæses ved hjælp af SQL*Loader og behøver derfor ikke SQL Workbench for at importere dataene.

Flere detaljer findes i manualen

Rediger

Som Alex har påpeget i sin kommentar, kan du også bruge en DataPump eksport – men det kræver, at du har adgang til filsystemet på serveren. Ovenstående løsninger gemmer alle data på klienten.



  1. Sådan opretter du en MySQL-database ved hjælp af kommandolinjegrænsefladen (CLI)

  2. Valg af data i et Postgres-array

  3. Betyder udvikling af kontaktoplysninger at ændre din database?

  4. Sådan returneres alle upålidelige udenlandske nøglebegrænsninger i SQL Server (T-SQL-eksempel)