我目前正在使用 SSIS 定期将大量 CSV 文件导入我们的系统。这些导入过程是使用 SQL Server 代理来安排的 - 这应该有一个美好的结局。然而,我们从其中接收数据的供应商之一喜欢时不时地更改文件格式(感觉就像每月两次),并且在 SSIS 中实现这些更改是一种巨大的痛苦。
是否有一种不那么痛苦的方法将这些导入到 SQL Server 中?我的要求相当简单:
非常感谢!
BULK INSERT
是您可以选择的另一个选项。您可以用它定义您自己的文件模板:
https://learn.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql
https://jamesmccaffrey.wordpress.com/2010/06/21/using-sql-bulk-insert-with-a-format-file/
您可以考虑使用 BIML,它在运行时根据元数据动态生成包。
我尝试过Java解决方案“dbis”。请检查以下。
https://dbisweb.wordpress.com/
它有 xml 文件中的迁移信息。您可以在任何文本编辑器中对其进行编辑。 但它需要静态表名。
我理解你的痛苦。也去过那里。
看起来您需要在运行时动态更改列。但首先,变化必须有一个模式。或者这些变化是可选数据还是什么?您仍然可以将 SSIS 与脚本组件一起使用,以在运行时动态映射列。或者,如果这些更改是可选信息,您可以将其设为 JSON 文档并将其存储在 SQL Server 中(如果这对您的要求有意义)。
或者,将 CSV 转储到暂存表以进行临时存储。然后,让脚本或存储过程动态处理更改。您还可以将日志存储在 SQL Server 或其他格式中。
由于您没有具体详细提及这些变化,所以我无法向您提供更多信息。
或者,如果您愿意,也可以使用其他工具。您可以使用开源工具 Apache Nifi。或者像 Skyvia 这样的云集成平台。它有一个用于 CSV 文件的导入/导出工具,并具有自动列映射功能。它可以使用代理集成到本地 SQL Server。您可以在此处查看一些提示,将 CSV 文件集成到 SQL Server。