SSIS: как разбить значение ячейки Excel на столбцы SQL - PullRequest
0 голосов
/ 25 марта 2012

У меня есть файл Excel с такими данными:

ID | FieldA | FieldB 
1    ABC      A, B   
2    FGH      W, Z   
3    KLÑ      G, K   

Я хочу использовать SSIS и импортировать эти данные в таблицу SQL. Единственная проблема состоит в том, что эта таблица имеет такую ​​структуру:

ID | FieldA | FieldB1 | FieldB2

Итак, мне нужно разделить столбец «FieldB» в Excel и поместить его в FieldB1 и FieldB2 в SQL.

Результат будет примерно таким:

ID | FieldA | FieldB1 | FieldB2 
1  | ABC    | A       | B
2  | FGH    | W       | Z
3  | KLÑ    | G       | K

Есть идеи, как этого добиться?

Ответы [ 4 ]

1 голос
/ 25 марта 2012

Если я что-то упустил, я бы просто пропустил строку заголовка и правильно импортировал последующие данные.Уделите минуту или около того, чтобы присвоить имена столбцов и вуаля, готово.

0 голосов
/ 23 февраля 2016

Вы можете использовать производный столбец и добавить как два новых столбца. Выражение первого столбца должно быть таким:

SUBSTRING([FieldB],1,FINDSTRING([FieldB],",",1) - 1)

, а второе - следующим образом:

SUBSTRING([FieldB],FINDSTRING([FieldB],",",1) + 1,LEN([FieldB])- FINDSTRING([FieldB],"_",1) )
0 голосов
/ 25 марта 2012

Как я вижу здесь - подробное объяснение вашего примера.

С другой стороны, вы можете использовать другой подход - разбить один столбец Excel на два столбца в Excel, используя формулы Excel, и импортировать документ с 4 столбцами.

0 голосов
/ 25 марта 2012

Попробуйте выбрать соответствующий диапазон, затем запустите:

Sub SplitColumn()

  Dim strArr() as String
  Dim cell as Range

  For Each cell In Selection
    cell.offset(0, 1).resize(1,2).value = split(cell.value,", ")
  Next cell

End Sub

Теперь скопируйте и вставьте ваши данные в любое место.

Альтернатива без VBA: Введите следующую формулу в ячейку D2:

=LEFT(C2,FIND(",",C2)-1)

А в Е2:

=RIGHT(C2,LEN(C2)-FIND(", ",C2)-1)

И автозаполнение оставшейся части столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...