#etl #auto-increment #talend
#etl #автоматическое увеличение #talend
Вопрос:
Я использую бесплатную версию talend studio. У меня есть Excel с данными таблицы 2 листов «System» и «Part». Я хочу вставить данные в таблицы redshift system и part соответственно. Сначала я хочу проверить, присутствует ли данная система в таблице redshift, если да, извлеките ее системный идентификатор, если нет, добавьте его с новым системным идентификатором. То же самое касается данных детали, если деталь уже присутствует, получите идентификатор детали, если нет, добавьте запись с новым идентификатором.
Как только это будет сделано, идентификатор системы (существующий / новый) вместе с идентификатором детали (существующий / новый) должны быть добавлены в таблицу карты system_to_part, которая имеет столбцы system_id и part_id.
Таблицы в redshift создаются с идентификаторами в качестве автоматического увеличения, и при добавлении строк я вижу сгенерированные идентификаторы. Но как я могу взять идентификаторы в talend и вставить в новую таблицу (system_to_part)?
Комментарии:
1. Если вы намерены окончательно объединить данные в таблицу system_to_part из таблицы system и part, почему бы не использовать
Redshift
слияние для вставки / обновления данных, а не следовать тому, из чего / как извлекать идентификаторыTalend
.2. Привет, Абхишек, я не хочу вставлять данные всей системы и таблицы элементов в таблицу system_to_part, а только идентификаторы с автоматическим увеличением для сопоставления. И он будет работать по расписанию, поэтому следует учитывать только недавно добавленные записи. И если я ошибаюсь, не могли бы вы, пожалуйста, уточнить подход, который вы предлагаете?
3. я имел в виду использовать
Redshift
варианты, которые у нас есть вместоTalend
. Позвольте мне попытаться объяснить это здесь — 1. создайте временную таблицу, в которой будут храниться данные из таблицы system / part — вы можете использовать все столбцы или только столбцы идентификаторов. 2. Теперь используйте временную таблицу для вставки записей в таблицу system_to_part, которая не существует (INSERT INTO system_to_part SELECT * FROM temp_system_to_part temp WHERE temp.primary_key NOT IN (SELECT DISTINCT primary_key FROM system_to_part)
)