【问题标题】:Put column data into the correct destination column sql ssis将列数据放入正确的目标列sql ssis
【发布时间】:2019-08-06 20:15:03
【问题描述】:

我遇到了来自系统的订单数据的一些问题 - 不同的列类型错误。

我正在使用 SSIS 将数据提取到表中

但是我遇到了一些看起来像这样的记录

CUSTOMERID DATE       ITEMID     ITEM 
1          10/04/2017 A1456      TABLE 
2          20/05/2017 A3432      CHAIR 
3          16/06/2017 A3432      CHAIR 
4          18/06/2017 Null       A3432,CHAIR 
5          23/06/2017 A1456      TABLE

是否有一些 SQL 代码或我可以在 SSIS 中使用的过程来帮助纠正 ID 4 的问题,将 ITEMID 放入正确的行并按如下方式分隔项目?

CUSTOMERID DATE       ITEMID     ITEM 
1          10/04/2017 A1456      TABLE 
2          20/05/2017 A3432      CHAIR 
3          16/06/2017 A3432      CHAIR 
4          18/06/2017 A3432      CHAIR 
5          23/06/2017 A1456      TABLE

【问题讨论】:

  • 您需要首先找到, 符号并将其前面的所有内容放在第一列中,并使用substring 等sql 函数将其放在第二部分中。根据您的 DBMS 系统(MySQL、PostgreSQL、Oracle、SQL Server),可能会有不同的功能来执行此操作。
  • 请提供有关数据源的更多详细信息,是来自 CSV 文件、excel 文件还是其他数据库系统?

标签: sql sql-server ssis etl


【解决方案1】:

您可以使用以下表达式简单地添加 2 个派生列:

ITEMID

ISNULL([ITEMID]) ? TOKEN([ITEM],",",1) : [ITEMID]

项目

TOKENCOUNT([ITEM],",") > 1 ? TOKEN([ITEM],",",TOKENCOUNT([ITEM],",")) : [ITEM]

参考文献

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    相关资源
    最近更新 更多