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

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

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';

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

Что значит "не работает"? Пожалуйста, будьте конкретны! Взгляните на for /F петля.

aschipfl 02.05.2018 13:36

Но как, что бывает, когда не работает?

lit 02.05.2018 14:41

"Вставка" не работает. Я не могу передать все свои переменные из текстового файла

Siick 02.05.2018 14:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, благодаря @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

Я не думаю, что «tokens = 1-10» делает то, что вы думаете. FOR /?

lit 02.05.2018 17:26

@lit "tokens = 1-10" занимает от строки 1 до строки 10 в моем текстовом файле

Siick 03.05.2018 15:51

Это не то, о чем говорится в документации FOR /?.

lit 03.05.2018 16:31

@lit tokens = n -> Указывает, какие пронумерованные элементы для чтения из каждой строки (по умолчанию = 1) tokens = 2,4,6 вызовут обработку второго, четвертого и шестого элементов в каждой строке. tokens = 2-6 вызовет обработку второго, третьего, четвертого, пятого и шестого элементов в каждой строке. tokens = * вызовет обработку всех элементов в каждой строке. tokens = 3 * будет обрабатывать третий токен и 4-й + все последующие элементы, это также можно записать как tokens = 3, *

Siick 04.05.2018 12:11

Использование tokens = влияет на количество ITEMS в каждой строке`. Это не имеет ничего общего с количеством строк. Вам просто повезло, что в ваших строках только один элемент, поэтому все они попали в %% a.

lit 04.05.2018 15:04

@lit Хорошо, спасибо за точность, я плохо понял документацию.

Siick 07.05.2018 09:43

Другие вопросы по теме