使用 SSIS 导入 XML 个具有不同结构的文件
Import XML files with different structures using SSIS
我有多个具有不同结构的 XML 文件,但它们都共享一组特定的节点。
我的 objective 是只将那些相互节点导入 SQL 服务器 table。
我知道我无法为每种类型生成 .Xsd,因为有许多可能的 XML 文件变体,我该如何继续?
提前致谢。
简单的解决方案是将所有这些 XML 文件加载到 XML table(2 列:FileId 和 XmlData)中。这可以作为软件包的第一步来完成。
然后你将编写一个存储过程,它将 XML 从这个 table 切碎成你最后的 table。此存储过程将作为 SSIS 包中的第二步调用。
我认为使用 SSIS 并不容易做到这一点。
如果没有其他选择,您可以使用脚本组件作为源并使用 C# 或 VB.NET 解析 XML 文件脚本,然后仅生成包含所需列的输出。
您可以参考以下文章了解更多关于使用脚本组件的信息:
SchemaMapper class 库
有一段时间,我在做一个名为 SchemaMapper 的项目。它是一个使用 C# 开发的 class 库。您可以使用它从 XML 和其他具有不同结构的格式导入表格数据到统一的 SQL 服务器 table。
您可以参考项目 wiki 以获取分步指南:
此外,请随时查看以下答案,它可能会给您一些启发:
所以我针对这个特殊案例所做的解决方案是:
1- 添加一个 C# 脚本来读取 xml 文件并仅保留公共节点并将它们的值保存到我的 dts 变量中。
2- 将我刚刚填充的变量插入到我的 SQL 服务器 table 中。
这两个任务都在一个 for each 循环中,以遍历特定目录中的所有 xml 文件。
希望对您有所帮助!
我有多个具有不同结构的 XML 文件,但它们都共享一组特定的节点。
我的 objective 是只将那些相互节点导入 SQL 服务器 table。 我知道我无法为每种类型生成 .Xsd,因为有许多可能的 XML 文件变体,我该如何继续? 提前致谢。
简单的解决方案是将所有这些 XML 文件加载到 XML table(2 列:FileId 和 XmlData)中。这可以作为软件包的第一步来完成。
然后你将编写一个存储过程,它将 XML 从这个 table 切碎成你最后的 table。此存储过程将作为 SSIS 包中的第二步调用。
我认为使用 SSIS 并不容易做到这一点。
如果没有其他选择,您可以使用脚本组件作为源并使用 C# 或 VB.NET 解析 XML 文件脚本,然后仅生成包含所需列的输出。
您可以参考以下文章了解更多关于使用脚本组件的信息:
SchemaMapper class 库
有一段时间,我在做一个名为 SchemaMapper 的项目。它是一个使用 C# 开发的 class 库。您可以使用它从 XML 和其他具有不同结构的格式导入表格数据到统一的 SQL 服务器 table。
您可以参考项目 wiki 以获取分步指南:
此外,请随时查看以下答案,它可能会给您一些启发:
所以我针对这个特殊案例所做的解决方案是: 1- 添加一个 C# 脚本来读取 xml 文件并仅保留公共节点并将它们的值保存到我的 dts 变量中。 2- 将我刚刚填充的变量插入到我的 SQL 服务器 table 中。 这两个任务都在一个 for each 循环中,以遍历特定目录中的所有 xml 文件。 希望对您有所帮助!