Предоставление листов Excel и строки подключения в качестве входных данных при упаковке задания в Talend

Я разработал задание для копирования данных Excel в таблицы SQL (18 из них). Теперь хочу упаковать. Поскольку я новичок в этом, я не знаю, как поступить.

Я хочу упаковать его таким образом, чтобы пользователь мог предоставить входные листы Excel и строку подключения. И мой исполняемый файл будет копировать данные из этого количества входных листов «n» в жестко запрограммированные таблицы. Теперь пользователь может захотеть скопировать данные из любого количества таблиц.

Мой рабочий процесс

Stored Procedure -> excel input -> tMap -> tMSSql
                          |
                    on sub job ok
                          |
                    excel input -> tMap -> tMSSql
                          |
                    on sub job ok
                          |
                       ......
                          |
                    excel input -> tMap -> tMSSql

Я хочу знать, где и как определить их как входные параметры? Или как-то иначе это работает в Talend.


person Quick-gun Morgan    schedule 02.06.2014    source источник


Ответы (1)


Вы захотите использовать переменные контекста, которые затем можно будет определить во время выполнения.

В этом случае вам понадобится одна переменная для местоположения и имени файла для листа Excel, и, возможно, вы также захотите контекстуализировать параметры подключения к БД.

Если у вас есть различное количество листов в рабочей книге, вам нужно будет перенастроить свою работу, чтобы перебирать листы в рабочей книге и выводить в соответствующую таблицу, а не жестко кодировать количество листов, с которыми вы работаете. Это также можно сделать с помощью переменных контекста, но они должны контролироваться вашим циклом, а не определяться во время выполнения.

Если вы используете Talend Open Studio, вам нужно передать контексты времени выполнения в качестве параметра при запуске задания либо в командной строке, либо в сценарии оболочки/пакета. В редакциях Enterprise вы можете указать переменные контекста в консоли администрирования Talend.

Чтобы перезаписать любые заданные значения переменных контекста во время выполнения, вы можете передать это как параметр своему заданию при его запуске из пакета или сценария оболочки, добавив --context_param [param-name]=[param-value], например C:/Talend/Jobs/job.bat --context_param inputDir="C:/Talend/inputDir/"

person ydaetskcoR    schedule 02.06.2014
comment
Прямо сейчас я хочу спроектировать его для фиксированного количества листов в книге. Да, я использую Talend Open Studio. Что мне нужно изменить в моей предыдущей работе и как предоставить контекстные переменные для листа Excel (местоположение + имя) и подключения к БД? - person Quick-gun Morgan; 02.06.2014
comment
Вам нужно будет создать переменные контекста в части контекстов Talend, а затем использовать их, вызвав их как context.contextName в соответствующей части компонента, который в них нуждается. Таким образом, ваш компонент Excel должен искать ввод чего-то вроде context.WorkbookPath, где ваш контекст WorkbookPath будет полным путем к вашей книге. - person ydaetskcoR; 02.06.2014
comment
Спасибо, и каким должен быть мой подход к подключению к БД? - person Quick-gun Morgan; 02.06.2014
comment
Я взял переменную контекста с именем WorkbookPath. И при условии, что это значение по умолчанию «C:/Users/Administrator/Desktop/Workbook1.xlsx» (без запятой). Итак, теперь все мои входные данные Excel будут иметь «context.WorkbookPath» (без запятых), написанный в поле «Имя файла/поток»? И как мне ввести значение для поиска определенного рабочего листа в этой книге? - person Quick-gun Morgan; 02.06.2014
comment
Вам нужно будет сделать то же самое для параметров подключения к БД (если ожидается, что ваши параметры БД изменятся). Что касается их указания во время выполнения, я, честно говоря, не уверен, поскольку никогда не использовал Open Studio, но вы должны быть в состоянии найти его в Google или задать другой вопрос о том, как определить переменные контекста во время выполнения. - person ydaetskcoR; 02.06.2014
comment
То, что я пробовал для определения местоположения листа Excel, не работает. Он говорит, что WorkbookPath не может быть разрешен или не является полем. На самом деле я не могу найти много соответствующей информации в Google. - person Quick-gun Morgan; 02.06.2014
comment
Я обновил свой ответ, чтобы показать, как определить значения переменных контекста во время выполнения. - person ydaetskcoR; 03.06.2014
comment
Я использовал 7 переменных контекста в своем пакетном файле. Вместо того, чтобы каждый раз изменять пакетный файл со сложным синтаксисом, я хочу запустить это задание с моими собственными значениями переменных контекста. Я хотел бы упомянуть только имя файла (т.е. job1) и значения переменных контекста. Таким образом, мой файл будет содержать текст «job1 a b c t x y z». где a b c t x y z — значения переменных контекста. Я ожидаю, что job1 будет работать с использованием этих значений. Как изменить пакетный файл для этого? - person Quick-gun Morgan; 04.06.2014
comment
На данный момент мой Job1_run (командный файл из экспортированной папки) имеет..... --context_param ExcelFileLocation=%1 --context_param Host=%2 --context_param Database=%3 --context_param Schema=%4 --context_param Имя пользователя =%5 --context_param Password=%6 --context_param StoredProcedure=%7 %* И мой другой пакетный файл имеет.. Job1_run C:\Users\Administrator\Desktop\DemoData.xlsm localhost dbo Test Username Password StoredProcedureName Но это не работает . Пожалуйста, предложите решения. - person Quick-gun Morgan; 05.06.2014