2017-01-11 2 views
1

Я использую интеграцию данных Kettle Pentaho. Мне нужно пропустить ввод столбца IdN из первой таблицы (первый db), если он уже существует int second table (второй db).Вставить в таблицу, если идентификатор не существует, в противном случае пропустить

В моем дизайне котла у меня есть Table Input (который возвратил мне несколько строк).

Мне нужно выбрать отдельный столбец IdN из возвращаемых строк и вставить их (все различные идентификаторы) во вторую таблицу второй базы данных (чтобы избежать дублирования идентификаторов).

Я пытался с этим кодом в выполнения операторов SQL:

INSERT INTO {SecondTable} 
SELECT DISTINCT (IdN) 

Но вернулся с ошибкой:

Invalid column name 'IdN'.

А что смущает меня, что я проверил параметр IDN в «Имя поля, которое будет использоваться в качестве аргумента» в разделе «Выполнить SQL-раздел» моего дизайна чайника, которое является допустимым именем столбца. Я вернулся из предыдущего входного узла таблицы.

+3

где ваша 'FROM' часть' SELECT'? – JotaPardo

+0

Я получаю данные из предыдущего узла «Вход таблицы», я не знаю, как я могу указать «из предыдущих строк данных, выполненных sql»? – luka032

+0

Я думаю, что вы все равно должны использовать таблицу в 'FROM' – JotaPardo

ответ

0

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

Insert into db1.dbo.tableName1(colname) 
    Select Distinct colname From db2.dbo.tablename2 
+0

Проблема с одним соединением в кеште задает одну базу данных, и я ограничена только одним подключением, поэтому я каким-то образом собираю данные и переношу их. – luka032

+0

При использовании таблицы в другой базе данных в формате [DatabaseName]. [Schema]. [TableName], она должна иметь возможность подключиться к ней даже из соединения с другой базой данных. Ты это пробовал? Если это на другом сервере, это будет [Server]. [DatabaseName]. [Схема]. [TableName] –

1

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