【问题标题】:Loading Comma Separated csv file to table in SSIS将逗号分隔的 csv 文件加载到 SSIS 中的表中
【发布时间】:2017-08-02 05:09:25
【问题描述】:

我有一个包含以下格式数据的 csv 文件。

文件:Sample.csv

身份证、姓名、地址

1,Abcd,street1,3rdcross,xxxx

2,Cfre,2ndmain,3rdstreet,yyy

3,Asdf,4thmain,1stcross,zzz

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

表格:示例

身份证姓名地址

1 Abcd street1,3rdcross,xxxx

2 Cfre 2ndmain,3rdstreet,yyy

3 Asdf 4thmain,1stcross,zzz

如何使用 SSIS 实现这一点?

如果我们使用逗号分隔符,那么地址列将分成 3 列。

【问题讨论】:

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


    【解决方案1】:

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

    当将文本限定符更改为双引号 " 时,它是完美的。

    【讨论】:

    • 所以你的文件看起来不像你在你的问题中问的那样。第三列实际上有引号。
    【解决方案2】:

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

    可能:

    Id,Name,Address,Directions,[Blah]
    

    如果您真的想将它们放回"," 分隔字段中,如您所说,则使用派生列并连接。

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

    【讨论】:

      【解决方案3】:

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

      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]))
        

      这就是如何从文本文件中获取三个单独的列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        • 2017-06-24
        • 2021-05-30
        相关资源
        最近更新 更多