SQL-скрипт выполнения строки не может прочитать файл.sql. Я получаю эту ошибку

2018/02/01 11:20:00 - Выполнить строку SQL script.0 - Мы не можем найти поле [C:\Users\abc\Documents\xyz\query\record.sql] во входном потоке!

Мои шаги включают в себя -

  1. получить переменные - ввод
  2. Выполнить строку SQL-сценарий - где я пытаюсь прочитать мой файл запроса
  3. вывод текстового файла

В сценарии выполнения строки SQL я дал C: \ Users \ abc \ Documents \ xyz \ query \ record.sql в поле имени SQL.

РЕДАКТИРОВАТЬ

Поясняю, я хочу, чтобы задание считывало запрос (из файлов) и выдавало текстовый вывод сам по себе (запустил и вывел результат запроса select).

2 ответа

Решение

Я копирую / вставляю объяснение из документов двух параметров конфигурации из шага " Выполнить строку сценария SQL":

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

а также

Чтение SQL из файла. Если этот флажок установлен, параметр имени поля SQL указывает файл, содержащий SQL для выполнения, в противном случае параметр имени поля SQL указывает фактический SQL для выполнения. (Доступно с 5.0)

Таким образом, вы не можете указать путь к файлу в опции имени поля SQL, но вы можете указать поле из потока, которое содержит путь к файлу до требуемого sql. В противном случае вы должны определить в этой опции поле, содержащее текст sql.

Надеюсь, поможет.

РЕДАКТИРОВАТЬ 1

Поскольку вам нужно выполнить запрос выбора из файла, я бы порекомендовал шаг Dynamic SQL row, так же как на следующем изображении.

Как работает динамический SQL строки

Я думаю, что это сделает работу.

РЕДАКТИРОВАТЬ 2

Следующее просто выполняет динамическое выполнение sql. Во-первых, вам нужно загрузить sql запросы в поток. После этого задание будет выполнено для каждого sql. В этом задании устанавливается переменная, содержащая запрос sql, и затем выполняется преобразование. Это преобразование в основном является Input Table шаг, который динамически заполняет поле sql предыдущей переменной набора sql.

пентахо динамическое sql исполнение

Теперь я думаю, что это то, что вы ищете. Надеюсь, поможет.

Чтобы прочитать таблицу SQL, используйте шаг Table inputи скопируйте и вставьте запрос в большую текстовую область.

Обратите внимание, что если у вас нет сложного объединения в вашем запросе, вам редко приходится импортировать сценарии SQL благодаря очень удобному Get SQL Statement кнопка.

Начните с оператора выбора без параметров. Как только это сработает, замените переменные на $ {variable} и отметьте галочкой Replace variable in script флажок (Предупредите, что существуют некоторые ограничения из-за подготовленного оператора SQL Java, например, у вас может не быть переменной в имени таблицы).

Если вы хотите получить скрипт из файла, сначала прочитайте файл с Table input в столбце и выберите этот столбец в Insert data from step из Table input,

Если у вас все еще есть переменные параметры в вашем файле, либо в названии таблиц, из которых вы выбираете, то используйте Modified Javascript или Regex evaluatorили любой другой шаг для замены переменных их значением и передачи полученного сценария SQL в таблицу через Insert data from step,

Если у вас есть файл file.sql для чтения, не забудьте проверить Execute for each row кнопка.

Надеюсь это поможет.

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