2014-10-15 5 views
0

Я пытаюсь создать преобразование с помощью чайника, которое может читать таблицу из моей базы данных, а затем подключиться к удаленной базе данных postgresql, вставить новые строки в удаленную базу данных (или обновить, если значение изменилось или ничего не делать, если удаленная таблица имеет те же данные, что и моя таблица). Он отлично работает на вставку, но когда он пытается обновить строку, я получаю следующее сообщение об ошибке:Обновление при преобразовании ложки дает «дублирующее значение ключа нарушает уникальное ограничение»

Insert/Update.0 - ERROR (version 5.2.0.0, build 1 from 2014-09-30_19-48-28 by buildguy) : Unexpected error 
org.pentaho.di.core.exception.KettleStepException: 
2014/10/15 16:52:54 - Insert/Update.0 - Error in step, asking everyone to stop because of: 
2014/10/15 16:52:54 - Insert/Update.0 - Error inserting/updating row 
2014/10/15 16:52:54 - Insert/Update.0 - ERROR: duplicate key value violates unique constraint "test_pentaho_pkey" 
2014/10/15 16:52:54 - Insert/Update.0 - Detail: Key (id)=(3) already exists. 

Я запутался, почему ее пытается вставить, потому что идентификатор является первичным ключом, так что если идентификатор существует, он должен просто обновить его, а не пытаться вставить его. Как я могу обойти это? Я что-то делаю неправильно в настройках шага Insert/Update?

Это мои настройки шага Insert/Update на интерфейсе Ложка в:

enter image description here

Мои таблицы базы данных содержимого:

id | name | age 
----+------------+----- 
    1 | ioqw  | 50 
    2 | 12132  | 32 
    4 | test_data1 | 24 
    5 | test_data1 | 24 
    6 | hello  | 24 
    3 | hello3  | 50 
(6 rows) 

Дистанционные содержимое таблицы базы данных:

id | name | age 
----+------------+----- 
    1 | ioqw  | 50 
    2 | 12132  | 32 
    3 | test_data | 14 
    4 | test_data1 | 24 
    5 | test_data1 | 24 
(5 rows) 

I пытался обновить строку удаленной таблицы с id = 3 ,

+0

Помог ли мой ответ для вас? –

+0

Yup, сделал. Спасибо!! – bachkoi32

ответ

3

Судя по сообщению об ошибке, первичный ключ целевой таблицы находится только в столбце id. Однако в вашем компоненте обновления вы попросите Spoon использовать объединенный ключ столбцов id, age и name, чтобы определить, существует ли запись (см. Записи ниже Ключ для поиска значений). Вам придется удалить столбцы name и age из этого списка.

Смежные вопросы

 Смежные вопросы