从SSIS中删除平面文件中的字符的最佳方法是什么?就我而言,我需要在处理之前删除文件中的所有引号。
修改
如何针对SSIS中的某些文件运行可执行文件?我可以以某种方式使用源连接作为输入,还是我必须将文件名作为参数传递?
答案 0 :(得分:2)
最简单的方法是创建一个“转换”脚本组件并使用代码去除引号。
答案 1 :(得分:1)
我使用了Derived Column Transformation
e.g。如果我想使用派生列替换','“,#ssis,我会写
Replace(Replace(REPLACE(name,"$"," "), "'", " ")," ","")
但我觉得,如果需要过滤1或2列,那么这种方法很好。如果涉及更多内容,请继续Script task
答案 2 :(得分:1)
由于您必须对文件中的所有字段执行此操作,因此我建议将其作为该过程的第一步而不是转换工作流中的操作。
您可以编写自己的.NET脚本代码并将其嵌入到脚本任务中。 您还可以通过执行流程任务调用第三方工具或组件。
例如,如果您可以访问cygwin unix命令行,那么这样的事情就可以完成:
sed s/\"//g data1.txt
您可以通过上面提到的“执行流程任务”组件调用可执行文件,并且可以通过在组件属性上设置表达式来参数化其输入。这些表达式可以基于可能通过配置文件配置的输入变量。 (这只是SSIS为实现这样的目标提供的众多方式之一)
答案 3 :(得分:0)
如果我正确理解您的问题,您想要从文本文件中的任何列值中删除任何引号?如果是这种情况,您将使用派生列转换。您可以在派生列名称下拉列表中选择替换“column_name”。然后,您将使用以下代码填充表达式属性: REPLACE(“\”“,[column_name],”“)
希望这有帮助。
答案 4 :(得分:0)
unclepaul84和Ryan Fonnetts的解决方案都可行,但我个人更倾向于使用unclepaul,因为我发现我知道有多个文件需要引用,我可以为每一个使用相同的转换代码(这很好)。
答案 5 :(得分:0)
这些是解决方案,但我相信平面文件连接管理器中内置了更简单的功能。
在ver ver选项卡General上,您将找到Format sectin下的第一个文本框,名为Text Qualifier。在此输入一个双引号(或单引号,如果所有列都用单引号括起来),然后单击预览。
这可以解决您的问题!