使用 SSIS 将不同的 csv 文件加载到不同的 SQL 服务器表中的最佳方法是什么?

What is the best way of loading different csv files into different SQL Server tables using SSIS?

我应该重复使用同一个平面文件连接管理器,还是应该为每个要导入的文件放置单独的平面文件连接管理器?

描述:

我有 30 个不同结构的 CSV 文件,我需要将这些文件导入 SQL 服务器数据库。

目前我正在为每个平面文件源使用单独的平面文件连接管理器。然后使用 OLEDB 目标将数据推送到 SQL 服务器数据库。

我应该重复使用同一个平面文件连接管理器吗?

你能指导我吗 - 如何做到这一点?任何链接都会有所帮助。

由于文件之间的结构不同,您应该使用单独的连接。这允许您为每种文件类型正确定义列名、大小和数据类型。

我认为您可以使用 MultiFaltFile 作为源连接管理器。使用此功能,您可以一次 select 多个文件。

参见下面的link:

http://www.sqlservergeeks.com/sql-server-import-multiple-files-in-ssis-using-multi-flat-file

无需创建 30 个平面文件连接,而只需在 Foreach 循环容器中使用一个,为文件名传递一个表达式。

为了解决您的 CSV 文件格式不同的问题,当您创建平面文件连接时 select 右对齐而不是分隔,这会将文件中的每一行视为一个非常宽的列而不是多个字段(确保您使列足够宽以处理您的文件)。

然后您可以将平面文件源的输出发送到一个脚本组件中,您可以在其中放置所有逻辑来处理您的文件。使用 Regex 或拆分将每一行转换回字段,然后您就可以使用 C# 的全部功能来处理每一行。脚本组件也可以有多个输出,因此您甚至可以像条件拆分一样使用它。

这似乎需要更多的工作(取决于或您的文件是什么样的以及您如何处理它们),但最终结果是移动部分更少。