SSIS:如何拆分Excel单元格的值转换为SQL列

问题描述:

我有一个Excel,像这样的数据文件:SSIS:如何拆分Excel单元格的值转换为SQL列

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

我想要做的是使用SSIS并将此数据导入到SQL表。唯一的问题是,这个表中有一个这样的结构:

ID | FieldA | FieldB1 | FieldB2 

所以,我需要做的是在Excel中拆分“FieldB”栏目,并把它变成FieldB1和FieldB2在SQL。

其结果将是这样的:

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

就如何实现这一目标的任何想法?

尽量选择相关的范围,然后运行以下命令:

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) 

而在E2:

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

和自动完成柱的其余部分。

除非我错过了一些东西,我只是跳过标题行,让它正确导入后续数据。请花点时间分配列名并完成。

正如我所见here是你的例子的详细解释。

另一方面,您可以使用另一种方法 - 在Excel中使用Excel公式分割两列中的一个excel列,并导入4列的文档。

你可以使用派生列,并添加两个新列。第一列表达式应该是这样的:

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

,第二个是这样的:

SUBSTRING([FieldB],FINDSTRING([FieldB],",",1) + 1,LEN([FieldB])- FINDSTRING([FieldB],"_",1))