Informix / SQL - загрузить данные из CSV и вставить, если еще не существует - PullRequest
0 голосов
/ 09 декабря 2018

Я пишу SQL-скрипт в Informix, который загружает данные из CSV-файла во временную таблицу, а затем вставляет данные, если они еще не существуют.

CSV имеет 3 столбца и вставляется во временную таблицу с именем temp_table_csv:

temp_table_csv
msg_group
code
message

'code' соответствует тому же полю кода в table1, а table1.ID является внешним ключом дляtable.code_id.

table1
ID         serial         PK
code       varchar(255)   FK
msg_group  varchar(255)

table2
lang_id    serial         PK
code_id    varchar(255)   FK
msg_pt1    varchar(255)
msg_pt2    varchar(255)

Если код во временной таблице существует в table1, то я хочу его игнорировать.

В противном случае, если он не существует:

Новая запись в table1 должна быть добавлена ​​с новым идентификатором и группой msg_group из временной таблицы.Также таблица 2 должна быть обновлена ​​с code_id, являющимся table1.ID, и msg_pt1, являющимся сообщением.

Я получил данные во временную таблицу, и я не уверен, как я могу проверить, чтобы видеть, 'ID''существует сейчас.

1 Ответ

0 голосов
/ 09 декабря 2018

Informix ... возможно я ошибаюсь, но в любом случае пахнет продуктом Avaya.Без каких-либо образцов я бы предложил вам попробовать что-то вроде

INSERT INTO table2(field1, field2)
SELECT msg_pt1, msg_pt2
FROM #TEMPORARY_CSV_OR_WHATEVER T
WHERE T.ID NOT IN(SELECT ID FROM table1)

INSERT INTO table1(ID)
SELECT ID
FROM #TEMPORARY_CSV_OR_WHATEVER T
WHERE T.ID NOT IN(SELECT ID FROM table1)
...