|
|
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Доброе время суток коллеги! Столкнулся с такой задачкой, хотелось бы с FTP скачивать файл не на диск, а в ОЗУ, некий такой Stream, есть ли такое в Оракле? В целом задача простая, с FTP получить XML файл, обработать его и записать в таблицу в CLOB. Так вот не хочется создавать на диске временный каталог, а писать файл в ОЗУ, сверить его по размеру с данными FTP, если все ок, то обработать и поместить в таблицу. С помощью пакета ftp я подключаюсь, получаю список файлов, а дальше у FTP функция записи подразумевает дисковое пространство... Можно обойти это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 12:21 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
где то в сети валялся пакет ftp_pkg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 12:24 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 12:28 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Поиск по "PLSQL FTP", одна из первых ссылок . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 12:30 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Супер! Работает ))) Спасиб большое!)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 12:45 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
А работает как-то интересно... Почему-то в начале скаченного документа присутствует произвольный набор символов, 1-3 символа, хотя в оригинале их нет. Получается что файл xml начинается с такого "?<?xml version="1.0" encoding="utf-8"?>" первый символ - лишний и не понятно от куда он его вытащил )) ощущение, что где-то выходим за рамки буфера? Вот такой код получился... l_conn UTL_TCP.connection; l_clob CLOB; BEGIN l_conn := ftp.login('<FTPSERVER>', '21', 'USER', 'PASSW'); Ftp.BINARY(p_conn => l_conn); EXCEPTION WHEN OTHERS THEN BEGIN txt_ftp_err := 'Не удалось установить соединение с сервером.'; RAISE exc_ftp_err; END; END; BEGIN l_clob := Ftp.get_remote_ascii_data (p_conn => l_conn, p_file => 'FILE123.xml'); Ftp.logout(l_conn); EXCEPTION WHEN OTHERS THEN BEGIN txt_ftp_err := 'Не удалось загрузить данные из файла на сервере.'; RAISE exc_ftp_err; END; END; Затем я его пишу в таблицу через конвертер convert(l_clob,'CL8MSWIN1251','AL32UTF8') Вот сижу и чешу мозг )) Может кто уже сталкивался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 13:05 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Если не конвертировать, то начало файла такое "п»ї<?xml version="1.0" encoding="utf-8"?>" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 13:06 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Dr_Grizzly1-3 символа, хотя в оригинале их нетBOM. Редактор может его не показывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 13:08 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Проверили эту мысль, не оно... явно мусорные символы... В загрузке через файл - все чисто. Открываю тем же viewer'ом. В одном случае их нет, в другом - есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 13:18 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Что-то ты нагородил непоследовательное. Режим выставляешь binary, а дергаешь get_ascii_data, это при чтении-то XML в UTF8, а потом используешь convert-функцию. Читай бинарные данные в blob без всяких ascii-подобных функций. А потом конвертируй blob в clob с явным указанием кодировки. Ну, и если кодировка БД не UTF8, то рискуешь потерять некоторые символы на конвертации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 13:23 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Да и уровень развития современных технологий позволяет получить XML из BLOB-а без необходимости явного вызова конвертации в CLOB. И хранить данные можно сразу в XMLtype, если тебе выложили действительно валидный XML по разметке/схеме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 13:28 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Dr_Grizzlyявно мусорные символыВ 1251 Код: sql 1. явно BOM от utf-8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 13:29 |
|
||
|
С FTP записать файл в ОЗУ
|
|||
|---|---|---|---|
|
#18+
Раз уж мы тут затронули тему передачи файла - то я тут столкнулся с такой проблемой - когда передаю один файл - то все хорошо, он уходит полностью. Но когда иду по списку, то похоже что следующая команда отправки не дожидается окончания предыдущей, прерывает сессию и начинает новую передачу, следовательно файлы уходят битыми... Перекопал пакет FTP, найти что-то похожее на ожидание не смог. Может какими-то другими способами можно дождаться окончания передачи перед новым запросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2018, 11:26 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=125&tid=1884424]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 323ms |

| 0 / 0 |
