在SSIS上解析非结构化平面文件

时间:2018-06-07 17:03:55

标签: visual-studio-2015 ssis script-task flatfilesource

我在解析非结构化文本文件时遇到问题。我尝试将所有内容上传到一个数据类型为DT_STR的列,但由于我的文件中有特殊字符,如“=”,因此会抛出错误。我试过DT_TEXT数据类型,效果很好。但是我无法对列执行任何操作。我需要删除该列中的空行,这可以通过'条件拆分'来完成。但条件是:

[column 0]!=""

不起作用并抛出以下错误:

TITLE:Microsoft Visual Studio

数据流任务错误[条件分割[32]]:数据类型“DT_TEXT”和“DT_WSTR”与二进制运算符“!=”不兼容。操作数类型无法隐式转换为操作的兼容类型。要执行此操作,需要使用强制转换运算符显式转换一个或两个操作数。

数据流任务错误[条件分割[32]]:尝试设置二进制操作的结果类型“[Column 0]!=”“”失败,错误代码为0xC0047080。

数据流任务错误[条件分割[32]]:计算表达式“[Column 0]!=”“”失败,错误代码为0xC0047084。表达式可能有错误,例如除以零,在分析时无法检测到,或者可能存在内存不足错误。

数据流任务错误[条件分割[32]]:“条件分割。输出[案例1]”表达式“[列0]!=”“”无效。

数据流任务错误[条件拆分[32]]:无法在“条件拆分输出[案例1]”上设置属性“表达式”。

其他信息:

HRESULT的异常:0xC0204006(Microsoft.SqlServer.DTSPipelineWrap)

按钮:

确定

我之前使用c#脚本进行了解析。但现在我需要避免编码。任何有关如何解析此文件的想法都表示赞赏。三江源

1 个答案:

答案 0 :(得分:1)

让我们打破这个

  

数据类型“DT_TEXT”和“DT_WSTR”与二元运算符“!=”

不兼容

您有一个表达式[column 0]!="",空字符串""是DT_WSTR,[column 0]是DT_TEXT数据类型。如错误消息所示,您无法测试这些类型之间的不等于条件。

我会查看将第0列转换为DT_WSTR或只是检查长度。 LEN([column 0]) > 0

SSIS方式

更大的问题是您的文件不是“非结构化文本文件”。它非常有条理。列标题位于第3行(基于1计数),数据从5开始。数据本身从此处看起来是固定宽度。

你如何处理SSIS?创建Ragged Right类型的平面文件连接管理器。指示没有标题列并跳过第5行中的前4行/数据开始。通过指定宽度创建列,现在您的数据流更简单,包将运行得更快。