2013-09-16 2 views
0

У меня есть простой CSV-файл, который я импортирую. Я написал задачу скрипта, чтобы выполнить ее. Моему адресату нужен столбец первичного ключа, поэтому я добавил его в код.Первичные ключи SSIS и гиды

Но теперь я решил сделать то же самое с Плоский файл источника. Тем не менее, я и нашел somesources, которые говорят, что производная колонка не может создать идентификатор или столбец Guid.

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

Действительно ли это так? Может ли производная колонка не создать простой столбец ID или Guid? Есть ли другой способ сделать это без скрипта?

ответ

0

No, Derived Column не может содержать выражения, которые будут увеличивать/уменьшать значения, а PK должны быть уникальными. Тем не менее, это очень простая задача.

Создайте переменную User::V_Counter и разместите Transformation Component в конце вашего DataFlow. Добавьте новый столбец PK в OutputBuffer. Код:

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    DTS.Variables["V_Counter"].Value = Convert.ToInt32(DTS.Variables["V_Counter"].Value)+1 
    ResultBuffer.AddRow(); 
    ResultBuffer.myPK = DTS.Variables["V_Counter"].Value; 
} 

Карта myPK в качестве входного столбца назначения. Вы можете легко управлять вашим форматом PK здесь - добавить строку/дату префикс и т.д.

+0

Это будет трюк, но я искал способ вокруг скрипта. Похоже, это единственный способ сделать это. – TsSkTo

+0

Дух прав, но реализация неверна, так как этот код на самом деле не работает. Метод доступа к переменным действителен только для сценария задачи, а не для компонентов. Вы не можете получить доступ к переменной SSIS во время работы потока данных. Это только в событиях pre/post execute. Вам также не хватает полуколонии на первой строке. – billinkc

+0

Это правда, ему придется изменить его на локальную переменную скрипта :) – makciook

2

Вы можете настроить таблицу назначения, которая имеет столбец IDENTITY, как PK

Вы отправляете все ваши плоские колонки файла в таблицу (игнорируя столбец IDENTITY). Поле PK будет автоматически увеличиваться во время вставки.

+0

Не говоря уже об этом, вероятно, будет быстрее, и вы можете получить аналогичный результат для GUID –

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