|
|
|
новичок
      
участник
Last Login: 12.10.2005 14:24
Сообщ.: 3,
Visits: 34
|
|
Проблема такая:
при выгрузке из clob в текстовый файл построчно скрипт вылетает с ошибкой записи в файл
Сама выгрузка сделана по дяде Тому
http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:744825627183
вот урезанный скрипт - весь приводить бессымсленно - остальной кусок являет собой выгрузку в xml с последующей конвертацией в clob
declare
l_offset number;
temp_node clob;
temp varchar2(16000 byte);
begin
l_offset := 1; -- указатель копирования в исходную позицию
while (l_offset < length(temp_node)) -- цикл копирования из clob в
--строку для записи в файл
loop
-- (сделано для обхода ограничения oracle на работу с текстовыми
--файлами)
UTL_FILE.fclose(fname_handle); -- переоткрыть файл
fname_handle := UTL_FILE.fopen(''IMPDIR'',fname,''a'',32000); -- и дописывать в
--конец
temp := dbms_lob.substr(temp_node,32000,l_offset);
-- записать ту часть которая влезает в размер строки (32000) с заданного
--места
temp := dbms_lob.substr(temp_node,16000,l_offset);
UTL_FILE.put_line(fname_handle,temp,true);
UTL_FILE.FFLUSH(fname_handle);
l_offset := l_offset + 32000; -- сместить указатель на 32000
end loop;
end;
вылетает не спервой строки а с 15 (14 строк выгружает без вопросов)
если ополовиниваю смещение вылетает на 7 строке
начинка строк xml - я весь скрипт просто не стал приводить
причем в другом скрипте выгрузка не таких долинных строк работает без вопросов - выгружает аж 51 МГ
понимаю что столкнулся с каким-то ограничением но что за ограничение и как его обходить не понимаю
можек кто подскажет? долблюсь вторые сутки а толку 0
|
|
|
|
|
новичок
      
участник
Last Login: 01.12.2005 15:42
Сообщ.: 8,
Visits: 89
|
|
Я пробовал выгружать в файл с помощью PL/SQL, но больше 200 Кбайт файл не сохранялся.
В итоге извернулся - написал класс на Java.
|
|
|
|