如何使用SSIS导入可变记录长度的CSV文件?
时间:2020-03-06 14:19:42 来源:igfitidea点击:
有没有人能够通过SSIS将可变记录长度的文本文件(CSV)导入SQL Server?
我曾尝试一次使用SSIS将CSV文件放入SQL Server表中,其中输入文件的记录长度有所不同。对于此问题,两个不同的记录长度分别为63和326个字节。所有记录长度将导入到相同的326字节宽度表中。
有超过一百万条记录要导入。
我无法控制导入文件的创建。
我必须使用SSIS。
我已与MS确认,已将其报告为错误。
我已经尝试了几种解决方法。大多数情况下都是我尝试编写自定义代码以截取记录的地方,而我似乎无法按照我的意愿使它工作。
解决方案
为什么不能只将其导入为测试文件,然后将列分隔符设置为","并将行分隔符设置为CRLF?
导入该文件应该没有问题。只要确保在创建平面文件连接管理器时选择"分隔格式",然后将SSIS列长度设置为最大文件列长度,即可容纳任何数据。
似乎我们使用的是固定宽度格式,这种格式不适用于CSV文件(因为我们具有可变长度的列),或者我们设置的列分隔符不正确。
我遇到了类似的问题,并且在数据流选项卡下使用了自定义代码(脚本任务)和脚本组件。
我有一个平面文件源输入到脚本组件中。在其中,我使用代码来处理传入的数据并将其修复为目的地。
我的问题是提供者正在使用" 000000"作为没有可用的日期,而另一栏目有填充/修剪问题。
同样的问题。就我而言,目标CSV文件具有页眉和页脚记录,其格式与文件正文完全不同;页眉/页脚用于验证文件处理的完整性(日期/时间,记录计数,金额总计"校验和",用任何其他名称...)。这是"大型机"环境中文件的一种常见格式,尽管我尚未开始使用它,但我希望必须使用脚本来剥离页眉/页脚,将其余的保存为新文件,然后处理新文件。文件,然后进行验证。不能完全期望MS开箱即用(但是肯定会很好,不是吗?)。