【问题标题】:SSIS: How to split excel cell value into SQL columnsSSIS:如何将excel单元格值拆分为SQL列
【发布时间】:2012-03-25 03:20:21
【问题描述】:

我有一个包含如下数据的 excel 文件:

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

我想做的是使用 SSIS 并将这些数据导入 SQL 表。唯一的问题是这个表的结构是这样的:

ID | FieldA | FieldB1 | FieldB2

所以,我需要做的就是将Excel中的“FieldB”列拆分,放到SQL中的FieldB1和FieldB2中。

结果会是这样的:

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

关于如何实现这一点的任何想法?

【问题讨论】:

    标签: sql-server sql-server-2008 excel ssis split


    【解决方案1】:

    除非我遗漏了什么,否则我会跳过标题行并让它正确导入后续数据。花一分钟左右的时间分配列名,瞧,完成了。

    【讨论】:

      【解决方案2】:

      尝试选择相关范围,然后运行:

      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)
      

      并自动完成该列的其余部分。

      【讨论】:

        【解决方案3】:

        我看到here 是对您的示例的详细说明。

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

        【讨论】:

          【解决方案4】:

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

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

          第二个是这样的:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-06-18
            • 1970-01-01
            • 1970-01-01
            • 2021-06-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多