Предложение SQL Where из файла в Oracle

У меня есть требование создать SQL с предложением where, которое, как ожидается, будет просматривать записи файла, которые будут использоваться в этом предложении.

SELECT DISTINCT '/',t_05.puid, ',', t_01.puid,'/', t_01.poriginal_file_name
FROM PWORKSPACEOBJECT t_02, PREF_LIST_0 t_03, PPOM_APPLICATION_OBJECT t_04, PDATASET t_05, PIMANFILE t_01
WHERE t_03.pvalu_0 = t_01.puid AND t_02.puid = t_03.puid AND t_03.puid = t_04.puid AND t_04.puid = t_05.puid AND t_02.puid IN ( 'izeVNXjf44e$yB',
'gWYRvN9044e$yB' );

Выше приведен SQL-запрос. Как видите, в предложении IN есть две разные строки ( puids ), которые следует учитывать. Но в моем случае этот список длиной около 50 тысяч записей будет получен из splunk и будет в текстовом файле.

Пример вывода текстового файла выглядит следующим образом:

'gWYRvN9044e$yB',
'DOZVpdOQ44e$yB',
'TlfVpdOQ44e$yB',
'wOWRehUc44e$yB',
'wyeRehUc44e$yB',
'w6URehUc44e$yB',
'wScRehUc44e$yB',
'yzXVNXjf44e$yB',
'guWRvN9044e$yB',
'QiYRehUc44e$yB',
'gycRvN9044e$yB'

Я не гуру SQL, но быстрый поиск в Google дал мне ссылку на конструкцию OPENROWSET, которая недоступна в Oracle.

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

Спасибо, Паван.


person Pavan Dittakavi    schedule 27.11.2017    source источник


Ответы (2)


Рассмотрите возможность использования внешней таблицы, загрузчик SQL или, возможно, загрузить файл в таблицу на уровне приложения и выполнить обычный запрос .

person Robert Bain    schedule 27.11.2017

Я бы рекомендовал создать глобальную временную таблицу, добавить строки в эту таблицу, а затем присоединиться к вашей временной таблице.
Как создать временную таблицу в Oracle

Другие варианты: вы также можете использовать конвейерные функции: https://oracle-base.com/articles/misc/pipelined-table-functions

Или используйте конструкцию with as..., чтобы свернуть данные в SQL. Но это создало бы длинный оператор SQL.

person Egret    schedule 27.11.2017