Хранение файлов в поле CLOB Oracle DB - PullRequest
1 голос
/ 24 августа 2011

В моей таблице оракулов есть столбец с типом данных CLOB.Как сохранить файл .txt в этом столбце и как получить тот же файл?

Ниже приведено определение таблицы

fileID  Number
logFile CLOB

Заранее спасибо

1 Ответ

6 голосов
/ 24 августа 2011

Загрузка файла в CLOB в PL / SQL довольно проста - вам просто нужно использовать процедуру DBMS_LOB.LoadCLOBFromFile

CREATE DIRECTORY file_dir
    AS <<path on database server file system>>;

GRANT read, write
   ON file_dir
   TO your_user_name;

DECLARE
  l_src_file bfile := BFileName( 'FILE_DIR', <<name of file>> );
  l_dest_lob clob;

  l_dest_offset  integer := 1;
  l_src_offset   integer := 1;
  l_lang_context number := dbms_lob.default_lang_ctx;
  l_warning      number;
BEGIN
  dbms_lob.open( l_src_file, dbms_lob.lob_readonly );

  INSERT INTO some_table( fileID, logFile )
    VALUES( fileIDSeq.nextval, empty_clob() )
    RETURNING logFile 
         INTO l_dest_lob;

  dbms_lob.LoadCLOBFromFile( 
              dest_lob     => l_dest_lob,
              src_bfile    => l_src_file,
              amount       => dbms_lob.getLength( l_src_file ),
              dest_offset  => l_dest_offset,
              src_offset   => l_src_offset,
              bfile_csid   => dbms_lob.default_csid,
              lang_context => l_lang_context,
              warning      => l_warning );

  dbms_lob.close( l_src_file );
END;
/

Запись файла из CLOB вфайловая система снова немного сложнее.Я бы использовал что-то вроде процедуры clob_to_file Тома Кайта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...