Используйте текстовый файл, где каждая строка является параметром для передачи в SQL * Plus - PullRequest
0 голосов
/ 02 мая 2018

У меня есть текстовый файл, где каждая строка является идентификатором. Похоже, это

008700200107044314929
0049RXPRISE9000000476
0049GMLCLT00000001021
0147RXPRISE0000094208
0111RXPRISE0000043962
0132GDLCLT00000001637
002120001126002858830
0148FI000000000153554
0021JT000000000536614

Я хочу использовать этот файл и передавать каждую строку в качестве параметра в SQL * PLUS внутри моего командного файла.

Я хочу сделать что-то вроде этого:

sqlplus -l -s %cfg.pivot.user%/%cfg.pivot.pass%@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=%cfg.pivot.server%)(Port=1521))(CONNECT_DATA=(SID=%cfg.pivot.base%))) @%sql_histo% "%list_id_cli_temp%" >> %logfile%

% list_id_cli_temp% - мой текстовый файл, а% sql_histo% - моя команда SQL, и это похоже на

insert into xyz.clt_reinsert_histo select id_client, sysdate, code_societe , code_etabliss , date_session , date_heure , numero_ordre FROM xyz.ctransaction where id_client='&1';

Но так это не работает. У кого-нибудь есть идея с этим справиться?

1 Ответ

0 голосов
/ 02 мая 2018

ОК, благодаря @aschipfl, я использовал for / F для цикла внутри моего текстового файла и извлечения своих идентификаторов.

for /F "tokens=1-10" %%a in (%list_id_cli_temp%) do (
    sqlplus -l -s %cfg.pivot.user%/%cfg.pivot.pass%@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=%cfg.pivot.server%)(Port=1521))(CONNECT_DATA=(SID=%cfg.pivot.base%))) @%sql_histo% "%%a" >> %logfile%
)

Таким образом, я беру свои первые 10 строк и использую %% a, чтобы получить свой идентификатор из каждой строки текстового файла и передать его по параметру в мою команду sql

...