我写了一个SSIS包,它将数据从固定记录长度的平面文件导入到SQL表中。在单个文件中,记录长度是常量,但不同的文件可能具有不同的记录长度。每条记录以CR / LF结尾。如何让它检测记录的结尾位置,并在导入时使用该长度?
答案 0 :(得分:1)
您可以使用脚本任务。将ReadWriteVariable传递给脚本任务。我们调用ReadWriteVariable intLineLength。在脚本任务代码中,检测CR / LF的位置并将其写入intLineLength。在以下包步骤中使用intLineLength ReadWriteVariable来导入数据。
这是一篇包含一些很好例子的文章:script-task-to-dynamically-build-package-variables
希望这有帮助。
答案 1 :(得分:1)
这可能对每个人都不起作用,但我最终做的只是将其设置为分隔的平面文件并将CR / LF设置为行分隔符,并将列分隔符和文本限定符留空。如果你真的需要在导入中拆分列,这将无法工作,但我已经使用派生列任务来进行实际的列拆分,因为我的列位置是可变的,所以它工作正常。