我应该重复使用相同的平面文件连接管理器还是应该为每个要导入的文件放置单独的平面文件连接管理器?
描述:
我有 30 个不同结构的 CSV 文件,我需要将这些文件导入 SQL Server 数据库。
目前我为每个平面文件源使用单独的平面文件连接管理器。然后使用 OLEDB Destination 将数据推送到 SQL Server 数据库中。
我应该重复使用相同的平面文件连接管理器吗?
你能指导我 - 如何做到这一点?任何链接都会有所帮助。
我应该重复使用相同的平面文件连接管理器还是应该为每个要导入的文件放置单独的平面文件连接管理器?
描述:
我有 30 个不同结构的 CSV 文件,我需要将这些文件导入 SQL Server 数据库。
目前我为每个平面文件源使用单独的平面文件连接管理器。然后使用 OLEDB Destination 将数据推送到 SQL Server 数据库中。
我应该重复使用相同的平面文件连接管理器吗?
你能指导我 - 如何做到这一点?任何链接都会有所帮助。
由于文件之间的结构不同,您应该使用单独的连接。这允许您正确定义每种文件类型的列名、大小和数据类型。
无需创建 30 个平面文件连接,只需在 Foreach 循环容器中使用一个,传入文件名的表达式即可。
为了解决 CSV 文件格式不同的问题,当您创建平面文件连接时,请选择 Ragged right 而不是 delimited,这会将文件中的每一行视为一个非常宽的列而不是多个字段(确保您使列足够宽以处理您的文件)。
然后,您可以将平面文件源的输出发送到脚本组件,您可以在其中放置处理文件的所有逻辑。使用正则表达式或拆分将每一行转换回字段,然后您就拥有 C# 的全部功能来处理每一行。脚本组件也可以有多个输出,因此您甚至可以像条件拆分一样使用它。
这似乎需要更多的工作(取决于或您的文件是什么样的以及您如何处理它们),但最终结果是移动部件更少。
我认为您可以MultiFaltFile
用作源连接管理器。使用它,您可以一次选择多个文件。
请参阅以下链接:
http://www.sqlservergeeks.com/sql-server-import-multiple-files-in-ssis-using-multi-flat-file