1

从 SSIS 中的平面文件中去除字符的最佳方法是什么?就我而言,我需要在处理之前从文件中删除所有引号。

编辑:
如何对来自 SSIS 的某些文件运行可执行文件?我可以以某种方式使用源连接作为输入,还是必须将文件名作为参数传递?

4

6 回答 6

2

最简单的方法是创建一个“转换”脚本组件并使用代码去除引号。

于 2009-12-03T21:16:57.973 回答
1

我确实使用Derived Column Transformation

例如,如果我想在 ssis 中使用派生列替换 '、" "、#,我会写

Replace(Replace(REPLACE(name,"$"," "), "'", " ")," ","")

但我觉得,如果需要过滤掉1或2列,那么这种方法很好。如果涉及更多,请继续Script task

于 2009-12-13T03:14:50.953 回答
1

由于您必须对文件中的所有字段执行此操作,因此我建议将其作为流程的第一步,而不是作为转换工作流程中的操作。

您可以编写自己的 .NET 脚本并将其嵌入到脚本任务中。您还可以通过执行流程任务调用第三方工具或组件。

例如,如果您可以访问 cygwin unix 命令行,则应该执行以下操作:

sed s/\"//g data1.txt

您可以通过上述“执行流程任务”组件调用可执行文件,并且可以通过在组件属性上设置表达式来参数化其输入。这些表达式可以基于可能通过配置文件配置的输入变量。(这只是 SSIS 提供的实现此类目标的众多方法之一)

于 2009-12-17T14:15:59.493 回答
0

如果我正确理解您的问题,您想从文本文件中的任何列值中删除任何引号?如果是这种情况,您将使用派生列转换。您可以在派生列名称下拉列表中选择替换“column_name”。然后,您将使用以下代码填充表达式属性:REPLACE( "\"", [column_name] , "")

希望这可以帮助。

于 2009-12-03T21:13:59.467 回答
0

unclepaul84 和 Ryan Fonnetts 的解决方案都可以,但我个人更倾向于 unclepaul 的解决方案,因为我发现我知道有多个文件需要去掉引号,我可以为每个文件使用相同的转换代码(这很好)。

于 2009-12-03T22:27:57.237 回答
0

这些是解决方案,但我相信平面文件连接管理器中内置了更简单的功能。

在第一个选项卡“常规”上,您会在“格式”部分下找到第一个文本框,称为“文本限定符”。在此处输入一个双引号(如果所有列都用单引号括起来,则输入一个单引号),然后单击预览。

这应该可以解决您的问题!

于 2015-03-23T18:22:48.593 回答