2009-03-06 1 views
1

Мне нужна помощь в определении рабочего процесса, и я не уверен, как это сделать ... Скажем, я преобразовываю (ETL?) Данные из таблицы A в таблицу B. Таблица A имеет составной первичный ключ A. a + A.b + Ac, тогда как таблица B имеет только столбец с автоматически заполняемым идентификатором. Как сопоставить составные клавиши от A до идентификаторов, созданных при вставке в B?Как управлять идентификаторами с помощью ETL?

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

ответ

1

Задайте себе, для чего вам нужны оригинальные ключи. Ответ может зависеть от исходной системы. Это может привести к тому, что вы сохраните столбец «исходная система» и столбец «исходные исходные ключи». Последнее, возможно, должно быть разделенным запятыми списком исходных ключей.

Или вы можете обнаружить, что вам действительно не нужно отображать карту, поэтому не нужно ничего хранить.

3

Если вы правильно поняли, вы не можете связать записи из таблицы B с записями таблицы A после преобразования, если вы каким-либо образом не зафиксируете отображение между составным ключом A и идентификатором B во время преобразования.

Вы можете добавить столбец в A и предварительно вычислить идентификаторы, которые будут использоваться при вставке в B. Тогда у вас будет сопоставление. Это также можно сделать, используя отдельную таблицу сопоставления, если вы не хотите добавлять столбец в A.

Если вы не хотите переопределять назначение идентификаторов по умолчанию, вам необходимо будет их захватить во время Загрузка. Для этой цели Oracle предоставляет предложение returning для insert в PL/SQL. Я не уверен в SQL Server. Это также можно выполнить, используя триггер на B для вставки в отдельную таблицу сопоставления или обновления столбца в A. Хотя это, вероятно, значительно замедлит вашу нагрузку.

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

Я надеюсь, что это поможет.