2014-01-29 3 views
0

У меня есть поля в колонке со значениями, как в следующем:Плевать Значение с одного поля на два значения, используемые в двух различных полей в SQL Server с помощью SSIS пакета

ABCDEFG:1234 

У меня есть пакет служб SSIS, который необходимо разделить это значение в два значения, как следующее:

ABCDEFG 

1234 

ABCDEFG будут импортированы в Field1 и 1234 в Field2

У меня есть следующий сценарий на процесс DerivedColumn1 в DataFlow:

LEFT([PN IN],FINDSTRING([PN IN],":",1)) 

и следующий сценарий в процессе DerivedColumn2 в DataFlow:

REPLACE([PN IN],":","") 

Который дает мне следующий вывод:

ABCDEFG 

Мой вопрос в том, что ... Потому что я уже использую производный столбец для этого поля. Это не позволяет мне сделать еще один процесс DerivedColumn в моем DataFlow, чтобы вытащить RIGHT из «:», чтобы дать мне ABCDEFG ... Какой протокол я возьму, чтобы захватить RIGHT? Могу ли я вложить это в один скрипт?

+0

Я недоумевал: Вы не можете добавить 'LEFT', как новый столбец и «RIGHT» в качестве нового столбца в компоненте 'Derived Column' в« Задаче потока данных »? Как именно это не позволяет вам это сделать? – Avarkx

+0

Я не пытаюсь создать новые столбцы в базе данных. Я импортирую отчеты Excel, которые находятся в одном столбце отчета, но их нужно разделить, потому что в базе данных уже есть 2 столбца, которые должны быть в том случае, когда split –

ответ

0

Derived Columns

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

+0

«LEFT» находится в более новой версии SSIS –

+0

Im пытается сделать другой DerivedColumn, чтобы захватить «ПРАВО». Но поскольку уже есть DerivedColumn, который захватывает «LEFT». ПРАВО теперь не существует ... Если я попытаюсь сделать еще один DerivedColumn после первого, чтобы захватить ПРАВО, он не позволит мне добавить поле, которое мне нужно добавить. –

+1

Построенный так же, я получил только 2008 R2. Независимо от того, что я делаю на скриншоте, я не использую столбец [LoginName], который я фиктивный. Я должен увидеть новый SSIS, чтобы понять, почему ваша колонка потребляется. Может быть, попробуйте SUBSTRING на обоих? Я использую это все время для разбора неприятных текстовых файлов. – Avarkx

1

вы можно разделить их так:

левая колонка:

SUBSTRING(col1,1,FINDSTRING(col1,":",1) - 1) 

правая колонка:

SUBSTRING(col1,FINDSTRING(col1,":",1) + 1,LEN(col1) - FINDSTRING(col1,":",1)) 

или, если у вас есть SSIS 2012, вы можете использовать функцию лексема

левая колонка: TOKEN(col1,":",1)
правая колонка: TOKEN(col1,":",2)

+0

Я могу взять ЛЕВЫЙ и ПРАВО. Возможно, мне следовало бы задать более правильный вопрос. В настоящее время у меня есть «ExcelSource», указывающий на «Derived Column», указывающий на «команду OLE DB». Все мои переменные сопоставляются с столбцами в моем ExcelSource. Моя проблема заключается в моем процессе DataFlow. Столбец Im расщепления должен быть сопоставлен с двумя разными столбцами в базе данных. Какие шаги я должен предпринять в моем процессе DataFlow, чтобы взять LEFT и RIGHT и поместить каждый в два отдельных поля в DataBase, когда поле в моем ExcelSource может быть сопоставлено только одной переменной в моей команде OLE DB? –