powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / загрузка файла в clob на 10g
5 сообщений из 5, страница 1 из 1
загрузка файла в clob на 10g
    #39709454
Wisky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь из директория загрузить файлы содержащие xml clob.

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

В начале попробовала через xmltype.

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT
xmltype(
            bfilename('DIR_REESTR', '1.xml'),
            nls_charset_id('UTF8')
        )
FROM DUAL d



Тут я попадаю на исключение
ORA-19202: Error occurred in XML processing
LPX-00200: could not convert from encoding UTF-8 to WINDOWS-1251

Из-за старой версии и кривой кодовой страницы сервера Oracle от этого отказалась.

Стала использовать LOADCLOBFROMFILE.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
CREATE TABLE T_XML (NOTE CLOB)
/
DECLARE
    dest_clob   CLOB;
    src_clob    BFILE := bfilename('DIR_REESTR', '1.xml');
    dst_offset  number := 1 ;
    src_offset  number := 1 ;
    lang_ctx    number := DBMS_LOB.DEFAULT_LANG_CTX;
    p_warning     number;
begin


   DBMS_LOB.OPEN(src_clob, DBMS_LOB.LOB_READONLY);

 dbms_output.put_line(DBMS_LOB.GETLENGTH(src_clob));
  dbms_lob.createtemporary (dest_clob, FALSE);
    DBMS_LOB.LOADCLOBFROMFILE(
          DEST_LOB     => dest_clob
        , SRC_BFILE    => src_clob
        , AMOUNT       => DBMS_LOB.GETLENGTH(src_clob)
        , DEST_OFFSET  => dst_offset
        , SRC_OFFSET   => src_offset
        , BFILE_CSID   => DBMS_LOB.DEFAULT_CSID
        , LANG_CONTEXT => lang_ctx
        , WARNING      => p_warning
    );
   DBMS_LOB.CLOSE(src_clob);
  DELETE FROM T_XML;
  INSERT INTO T_XML   (note)      
    values(dest_clob);  

end;
/
SELECT * FROM T_XML;



Загрузка проходит, но что толку в неверной кодировке.
Код: xml
1.
<?xml version="1.0" encoding="UTF-8"?><Файл ИдФайл="VO_RRMSPSV_0000_9965_20180910_00a304d6-c977-46dd-a3d8-28efc778653e" ВерсФорм="4.01" ТипИнф="РЕЕСТРМСП" КолДок="900"><ИдОтпр><ФИООтв Фамилия="-" Имя="-"/></ИдОтпр><Документ ИдДок="e258eb6e-939d-3882-fbf8-b9a1a4208b6a" ДатаСост="10.09.2018" ДатаВклМСП="10.09.2016" Р’РёРґРЎСѓР±РњРЎРџ="1" КатСубМСП=...



Есть еще какой то путь?
Уменьшенная копия файла прилагается.
...
Рейтинг: 0 / 0
загрузка файла в clob на 10g
    #39709464
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wisky
Код: sql
1.
        , BFILE_CSID   => DBMS_LOB.DEFAULT_CSID



https://docs.oracle.com/cd/E18283_01/appdev.112/e16760/d_lob.htm#i998978
авторbfile_csid

Character set id of the source (BFILE) file.
...
Рейтинг: 0 / 0
загрузка файла в clob на 10g
    #39709478
Wisky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, с 873 прокатил0
...
Рейтинг: 0 / 0
загрузка файла в clob на 10g
    #39709705
Wisky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда попыталась загрузить полный хml попалась на
ORA-22993: specified input amount is greater than actual source amount

DBMS_LOB.GETLENGTH(src_clob) = 9077147
...
Рейтинг: 0 / 0
загрузка файла в clob на 10g
    #39709842
Wisky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понимаю, многоитерационная загрузка через буфер реализована в процедуре, т.к. длина 3556436 заливается успешно (это явно больше 32767).
А эта ошибка так же появляется при AMOUNT>LEN.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / загрузка файла в clob на 10g
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]