1

我正在开发一个在MSSQL DB 中插入 XML 文件内容的应用程序,每次启动应用程序服务器时。

XML 包含相关表的多条记录。存储过程将 XML 文件内容作为 (TEXT) 参数,创建一个指针 ( sp_xml_preparedocument ) 并使用OPENXML插入到表中。

我需要使用 JDBC(或者可能是SQLCMD)从 XML 文件所在的应用程序服务器执行该过程。

XML 文件大约 160MB,现在我通过将 XML 文件作为大 String 对象读取到CallableStatement来发送 XML 文件,但它非常耗费时间/空间/资源。

4

1 回答 1

0

我不知道这是否是公认的最佳实践,但如果我这样做,我会认为这可能是以下方法的候选者:

  1. 将 XML 转换为易于加载的文件,例如符合 BCP 的脚本
  2. BCP/将数据加载到临时表/临时表中
  3. SQL 合并数据。这样做的好处是您可以针对您的用例优化 SQL。

在这种情况下,无需“传递”内存中的大量 blob,因此依赖于 SQL Server BCP 加载技术的高级处理,而不是 MSXML。

在这种情况下,对 SQL 的调用是简单的 sp 调用,参数指向文件。


如果 BCP 不是您的首选,那么使用 SSIS 的类似解决方案可能会起作用。


最后,如果您必须使用 XML 文件,那么也许将文件名传递给 SQL CLR 过程,该过程会将其加载到 SQL 内存中。

于 2014-06-12T04:31:56.013 回答