|
SQL Loader
|
|||
---|---|---|---|
#18+
Здравствуйте. Мне надо с помощью Sql loader загрузить в таблицу информацию из файла в таблицу. Кроме того мне надо загрузить в эту же таблицу имя файла, из которого происходит загрузка. Причем при каждой новой загрузке название этого файла будет новым. В управляющем CTL-файле INFILE определяет файл, из которого происходит загрузка. К примеру вот CTL-файл: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Пусть VAL2 - столбец таблицы под имя файла, из которого происходит загрузка данных в таблицу. Если поставить INFILE *, то что нужно прописать в блоке TRAILING NULLCOLS, чтобы имя файла, из которого происходит загрузка, записывалось в таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 09:38 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
sinerЕсли поставить INFILE *, то что нужно …, чтобы имя файла, из которого происходит загрузка, записывалось в таблицу?Такое не поддерживается. CTL придётся генерировать. STFF ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 10:06 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
Elic, подскажите, пожалуйста, как реализовать считывание имени файла и его запись в таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 14:41 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
siner, 1) Внешним скриптом (cmd,bash,perl ...) генерируете ctl в котором прописываете имя файла через const Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
2) если данные на сервере, то данные загружаются процедурой которая сканирует директорию с входными файлами, генерирует external table с полем constant имени файла как указано выше, переливает данные из external table в нужную таблицу и удаляет external table. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 17:02 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
Vadim Lejninsiner, 1) Внешним скриптом (cmd,bash,perl ...) генерируете ctl что касается пункта 1, то вызов следующего perl-скрипта с любыми аргументами отработает идентично и под bash, и под cmd, и под powershell ( загвоздка в том, что в windows ни cmd, ни powershell не поддерживают globbing ) genctl: Код: perl 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: php 1.
Код: php 1.
PS: сейчас реализован просто вывод на stdout, поэтому случай (2) множества файлов на входе ( *.dat ) нуждается в некоторой доработке ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 21:50 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
volodin661, Спасибо, данный способ подходит только для случая когда в директории находится один файл с данными? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 22:26 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
sinerданный способ подходит только для случая когда в директории находится один файл с данными? Нет, для всех случаев, но надо решить что будем делать при выводе, когда много файлов на входе ? а) генерировать много .ctl файлов б) запускать с помощью perl SQLLDR для каждого обработанного файла ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 22:42 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
siner, Кусок генерилки-запускалки. Список файлов предварительно в табличку files Код: 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. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2019, 14:00 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
Необязательно использовать базу. Вариант с поочередной загрузкой каждого файла. Код: plaintext
Код: sql 1. 2.
Код: plaintext
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
ps: forfiles и findstr в винде - аналоги find и grep в *nix, их использование порой бывает очень удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2019, 14:30 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
MazoHistforfiles и findstr в винде Во блин я динозавр, до сих пор обычными for и find пользуюсь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2019, 14:58 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
andrey_anonymousMazoHistforfiles и findstr в винде Во блин я динозавр, до сих пор обычными for и find пользуюсь :) Аналогично... :( Максимум нашел как подстроку вырезать ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2019, 15:13 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
MazoHist, Спасибо. Файл L.cmd в *nix как будет выглядеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 09:00 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
sinerMazoHist, Спасибо. Файл L.cmd в *nix как будет выглядеть? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 09:43 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
MazoHist, Был бы очень благодарен, если бы вы изменили и второй скрипт под *nix. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 10:23 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
siner, Код: plaintext
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 10:32 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
MazoHist, В первом файле нужен аргумент после find . -type f -name *.csv -exec ld.sh {} \; ? Дело в том что имя найденного файла не передается во второй скрипт, по крайней мере его нет в ctl-файле ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 10:42 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
sinerMazoHist, В первом файле нужен аргумент после find . -type f -name *.csv -exec ld.sh {} \; ? Дело в том что имя найденного файла не передается во второй скрипт, по крайней мере его нет в ctl-файле Проверка что передается: Код: plsql 1.
Для отладки shell Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 10:46 |
|
SQL Loader
|
|||
---|---|---|---|
#18+
siner, в моем примере ld.sh должен быть исполняемым. Либо chmod +x ld.sh либо поменять строку на -exec sh ld.sh {} \; ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 11:18 |
|
|
start [/forum/topic.php?fid=52&msg=39769530&tid=1882831]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 344ms |
total: | 495ms |
0 / 0 |