4

有没有人能够通过 SSIS 将可变记录长度文本文件 (CSV) 导入 SQL Server?

我一次又一次地尝试使用 SSIS 将 CSV 文件放入 SQL Server 表中,其中输入文件具有不同的记录长度。对于这个问题,两个不同的记录长度是 63 和 326 字节。所有记录长度都将导入到同一个 326 字节宽度表中。

有超过 100 万条记录可供导入。
我无法控制导入文件的创建。
我必须使用 SSIS。
我已向 MS 确认这已被报告为错误。我尝试了几种解决方法。大多数都是我尝试编写自定义代码来拦截记录的地方,但我似乎无法让它按我的意愿工作。

4

5 回答 5

4

我遇到了类似的问题,并使用了自定义代码(脚本任务)和数据流选项卡下的脚本组件。

我有一个平面文件源输入脚本组件。在里面,我使用代码来操作传入的数据并将其修复到目的地。

我的问题是提供商使用“000000”作为没有可用的日期,而另一个列有填充/修剪问题。

于 2008-09-24T14:47:51.213 回答
1

导入此文件应该没有问题。只需确保在创建平面文件连接管理器时,选择分隔格式,然后将 SSIS 列长度设置为最大文件列长度,以便它可以容纳任何数据。

看起来您使用的是固定宽度格式,这对于 CSV 文件不正确(因为您有可变长度列),或者您可能错误地设置了列分隔符。

于 2008-09-21T08:57:58.273 回答
1

同样的问题。就我而言,目标 CSV 文件的页眉和页脚记录的格式与文件正文完全不同;页眉/页脚用于验证文件处理的完整性(日期/时间、记录计数、总金额 - 任何其他名称的“校验和”......)。这是来自“大型机”环境的文件的常见格式,虽然我还没有开始使用它,但我希望必须使用脚本来去除页眉/页脚,将其余部分保存为新文件,处理新文件文件,然后进行验证。不能完全期望 MS 开箱即用(但它肯定会很好,不是吗?)。

于 2009-05-21T17:56:53.273 回答
1

您可以使用 C# 编写脚本任务来遍历每一行并用适当数量的逗号填充以填充数据。当然,这假设所有数据都与正确的列对齐。

即,当您阅读每条记录时,您可以“计算”逗号的数量。然后,只需将 X 个逗号附加到记录的末尾,直到它具有正确数量的逗号。

Excel 存在一个问题,导致在转换为 CSV 时会创建此类文件。

如果您可以“手动”执行此操作,解决此问题的最佳方法是在 Excel 中打开文件,在记录的“末尾”创建一列,并用1s 或其他字符一直填充它。

讨厌,但可以是一个快速的解决方案。

如果您没有能力执行此操作,则可以通过上述方式以编程方式执行相同的操作。

于 2012-03-15T13:48:19.880 回答
0

为什么不能将其作为测试文件导入并将列分隔符设置为“,”并将行分隔符设置为 CRLF?

于 2008-09-18T03:46:43.657 回答