加载逗号分隔的csv文件到SSIS中的表

时间:2017-08-02 05:09:25

标签: ssis ssis-2012 ssis-2008 msbi ssis-2005

我有一个带有格式化数据的csv文件。

  

文件:Sample.csv

     

ID,名称,地址

     

1,ABCD,street1,3rdcross,XXXX

     

2,CFRE,2ndmain,3rdstreet,YYY

     

3,ASDF,4thmain,1stcross,ZZZ

需要将数据加载到如下表格中。

  

表:样本

     

Id名称地址

     

1 Abcd street1,3rdcross,xxxx

     

2 Cfre 2ndmain,3rdstreet,yyy

     

3 Asdf 4thmain,1stcross,zzz

如何使用SSIS实现这一目标?

如果我们使用逗号分隔符,则地址列将分为3列。

3 个答案:

答案 0 :(得分:1)

最初,当Text Qualifier设置为none时,列将分开。

enter image description here

将文字限定符更改为双引号"然后它很完美。

enter image description here

答案 1 :(得分:1)

如果您的数据始终为5列但标题不是,则跳过第1行并根据需要命名列。

可能:

Id,Name,Address,Directions,[Blah]

如果你真的想把它们放回到你所说的","分隔字段,那么使用派生列并连接。

new column = Address + "," + Directions + "," + [Blah]

答案 2 :(得分:0)

这可以通过以下步骤从派生列转换中完成:

  1. 在平面文件连接管理器中选择格式为Ragged Right且不分隔。所以你的数据将在一栏中出现
  2. 选择派生列转换。使用下面提到的公式

    在此转换中创建3列
    ID - SUBSTRING([Id,Name,Address],1,FINDSTRING([Id,Name,Address],",",1) - 1)
    
    Name - SUBSTRING([Id,Name,Address],FINDSTRING([Id,Name,Address],",",1) + 1,FINDSTRING([Id,Name,Address],",",2) - FINDSTRING([Id,Name,Address],",",1) - 1)
    
    Address - SUBSTRING([Id,Name,Address],FINDSTRING([Id,Name,Address],",",3) + 1,LEN([Id,Name,Address]))
    
  3. 这是从文本文件中获取三个单独列的方法。

相关问题