sql >> Databáze >  >> RDS >> Oracle

Oracle:exportujte tabulku s objekty BLOB do souboru .sql, který lze znovu importovat

Nemyslím si, že je to možné s SQL Developerem (ale pak to moc často nepoužívám).

Klient SQL, který používám - SQL Workbench/J - to umí.

Existuje několik způsobů, jak tato data exportovat.

Vygenerujte proprietární skript

Může vytvořit skript SQL, který používá speciální (nástroj specifický) zápis k odkazování na externí soubor, něco jako:

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

Výše uvedený příkaz lze znovu provést pouze pomocí SQL Workbench. Není kompatibilní s žádným jiným SQL klientem.

Použijte utl_raw

Další alternativou je použití „blob literálu“, ale kvůli limitu Oracle na 4000 bajtů pro znakový literál to funguje pouze pro skutečně hodnoty malých objektů blob:

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

kde znakový literál pro cast_to_raw volání by obsahovalo hexadecimální hodnoty BLOB. Protože to vyžaduje 2 znaky na "bajt blob", nemůžete s tím zpracovat objekty BLOB větší než 2000 bajtů. Ale tato syntaxe by fungovala pro téměř všechny nástroje Oracle SQL (pokud zvládnou skripty s velmi dlouhými řádky).

Vstupní soubor SQL*Loader

Třetí alternativou je export dat do textového souboru, který lze importovat pomocí SQL*Loader:

Textový soubor by obsahoval něco takového:

NAME DATAfoobar blob_r1_c2.data

Společně s následujícím řídicím souborem SQL*Loader:

OPTIONS (skip=1)LOAD DATA CHARACTERSET 'WE8ISO8859P15'INFILE 'images.txt'APPENDINTO TABLE IMAGESFIELDS TERMINED BY '\t' TRAILING NULLCOLS( NAME, lob_file_data FILLER, DATABLOB Ldata FILLER, DATAB LAB> 

To lze načíst pomocí SQL*Loader, a proto k importu dat nepotřebuje SQL Workbench.

Další podrobnosti jsou v manuálu

Upravit

Jak zdůraznil Alex ve svém komentáři, můžete také použít export DataPump - ale to vyžaduje, abyste měli přístup k systému souborů na serveru. Všechna výše uvedená řešení ukládají data na klientovi.



  1. SQL Server:Temná stránka NVARCHAR

  2. MySQL AUTO_INCREMENT se nevrací

  3. MySQL match() against() - pořadí podle relevance a sloupce?

  4. Jak zašifrovat uloženou proceduru na serveru SQL Server