2

我编写了一个 SSIS 包,它将数据从固定记录长度的平面文件导入到 SQL 表中。在单个文件中,记录长度是恒定的,但不同的文件可能有不同的记录长度。每条记录都以 CR/LF 结尾。如何让它检测记录的结尾在哪里,并在导入时使用该长度?

4

2 回答 2

1

您可以使用脚本任务。将 ReadWriteVariable 传递给脚本任务。我们将 ReadWriteVariable 称为 intLineLength。在脚本任务代码中,检测 CR/LF 的位置并将其写入 intLineLength。在以下包步骤中使用 intLineLength ReadWriteVariable 导入数据。

这是一篇带有一些很好示例的文章:script-task-to-dynamically-build-package-variables

希望这可以帮助。

于 2012-11-09T23:16:46.597 回答
1

这可能不适用于所有人,但我最终所做的只是将其设置为带分隔符的平面文件并将 CR/LF 设置为行分隔符,并将列分隔符和文本限定符留空。如果您实际上需要在导入中拆分列,这将不起作用,但我已经使用派生列任务来执行实际的列拆分,因为我的列位置是可变的,所以它工作得很好。

于 2012-11-12T16:34:41.420 回答