如何使用 SSIS 在 SQL Server 中创建分隔符

Posted

技术标签:

【中文标题】如何使用 SSIS 在 SQL Server 中创建分隔符【英文标题】:How to create a delimited in SQL Server using SSIS 【发布时间】:2021-03-07 13:44:15 【问题描述】:

这是表格,我只想要 SQL Server 中“>”之后的最后一个字符串,没有空格

表 SQL Server 分隔:

Sports & Outdoors › Sports & Fitness › Leisure Sports & Game Room › Outdoor Games & Activities › Balls › Dodgeballs
Sports & Outdoors › Sports & Fitness › Leisure Sports & Game Room › Outdoor Games & Activities › Balls › Dodgeballs
Sports & Outdoors › Sports & Fitness › Accessories › Inflation Devices & Accessories
Sports & Outdoors › Sports & Fitness › Exercise & Fitness › Accessories › Jump Ropes

这是我需要的结果:

Dodgeballs
Dodgeballs
Inflation Devices & Accessories
Jump Ropes

这是xls中的函数:

=trim(index(SPLIT(A1,"›"),1,COUNTA(SPLIT(A1,"›"))))

这是 SSIS:

TRIM(SUBSTRING([Categories: Tree],FINDSTRING([Categories: Tree],"›",1),LEN([Categories: Tree])))

【问题讨论】:

由于某种原因,当我从 MSSQL 复制数据时,它复制错误;这就是它的样子drive.google.com/file/d/1MCiYI_CjHr7WZzw5ozxDtwZpOMfh7oMw/… 【参考方案1】:

在 SQL Server 中,您可以使用:

select t.*, 
       right(tree, charindex(' › ', reverse(tree)) - 1)
from t;

Here 是一个 dbfiddle。

【讨论】:

@Chriswinter 。 . .如果这回答了您的问题,您可以接受答案。【参考方案2】:

所以你正在使用 SSIS Derived Column 转换。

两个 SSIS 表达式函数的组合将产生所需的内容:TOKEN()TOKENCOUNT()。加上最后的TRIM()函数

对于 SSIS 变量:

TRIM(TOKEN(@[User::fileName], ">", TOKENCOUNT(@[User::fileName], ">")))

对于 SSIS 管道中的列:

TRIM(TOKEN(ColumnName, ">", TOKENCOUNT(ColumnName, ">"))) 

【讨论】:

这是我在 SSIS 中使用的,非常感谢 @Chriswinter,很高兴听到建议的解决方案对您有用。请不要忘记将其标记为答案。

以上是关于如何使用 SSIS 在 SQL Server 中创建分隔符的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 代理作业不执行 SSIS 包权限错误

如何使用 C# 找出安装在 SQL Server 中的 SSIS?

如何将 SQL Server 2008 R2 SSIS 包升级到 SQL Server 2016?

如何在 SQL Server 的 OVER 子句中使用变量

如何使用 SSIS 将 OTM 中的数据提取到 SQL Server 中?

将文本文件导入 SSIS 中的 SQL Server 表的数据流如何工作?