sql - 在 SSIS 中将逗号分隔的字符串拆分为多行?

标签 sql sql-server ssis etl ssis-2012

我想根据第一个表的输入在第二个表中实现输出。我想通过 SSIS 包执行此操作。

enter image description here

到目前为止,我尝试创建一个包,每当出现逗号 (,) 时都会出现绕过错误,但这没有用。也尝试过使用检查点,也无法那样实现。

最佳答案

第一种方法 - 您可以使用 SQL 语句实现此目的

在数据流任务中,在 OLEDB 源 中选择源类型为 SQL 命令 并使用以下命令 (替换 Tablename 和你的表名):

;WITH tmp(ID,  DataItem, [Group]) AS(
SELECT ID, LEFT([Group], CHARINDEX(',', [Group] + ',') -1),
       STUFF([Group], 1, CHARINDEX(',', [Group] + ','), '')
FROM [Tablename]

UNION ALL

SELECT ID,  LEFT([Group], CHARINDEX(',',[Group]+',')-1),
       STUFF([Group], 1, CHARINDEX(',',[Group]+','), '')
FROM tmp
WHERE [Group] > ''
)

SELECT ID,  DataItem
FROM tmp
ORDER BY ID

SQL Fiddle demo

引用资料


第二种方法——使用脚本组件

您可以引用此链接以获得详细答案:

关于sql - 在 SSIS 中将逗号分隔的字符串拆分为多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48735446/

相关文章:

sql - 在单行上分组事务

sql - sql server中数字的数字总和,而不使用像while这样的传统循环

sql - 内连接用 2 个外键连接到一个主键

c# - 如何在 EF.core 中使用 FromSqlRaw 特定列

sql-server - 从运行在不同虚拟机中的 ASP.NET MVC Web 应用程序执行 SSIS 包

sql - SSIS 截断表失败;删除成功

sql - 可以使用 AUTO_INCRMENT id 列代替 DATETIME 列来进行 SQL 排序吗?

javascript - 填充链式选择菜单

java - 单连接中的多条语句

sql-server - 从存储过程执行 SQL Server SSIS 包