我正在开发一个应用程序,该应用程序将 XML 文件的内容插入 MSSQL DB,每次应用程序服务器启动时。
XML 包含相关表的多条记录。存储过程将 XML 文件内容作为 (TEXT) 参数,创建指针 ( sp_xml_preparedocument ) 并使用 OPENXML 插入表中。 .
我需要使用 JDBC(或者可能是 SQLCMD )从 XML 文件所在的应用程序服务器执行该过程。
XML 文件约为 160MB,现在我通过将 XML 文件作为大 String 对象读取来发送到 CallableStatement ,但它非常消耗时间/空间/资源。
最佳答案
我不知道这是否是公认的最佳实践,但如果我这样做,我会认为这可能是以下方法的候选者:
- 将 XML 转换为易于加载的文件,例如符合 BCP 的脚本
- BCP/将数据加载到临时表/临时表
- SQL 合并数据。这样做的优点是您可以针对您的用例优化 SQL。
在这种情况下,无需在内存中“传递”大量 blob,从而依赖于 SQL Server BCP 加载技术(而不是 MSXML)的高级处理。
在这种情况下,对 SQL 的调用是简单的 sp 调用,参数指向文件。
<小时/>如果 BCP 不适合您,那么使用 SSIS 的类似解决方案也许可行。
<小时/>最后,如果您必须使用 XML 文件,那么也许可以将文件名传递给 SQL CLR 过程,该过程会将其加载到 SQL 内存中。
关于java - 调用采用大型 XML 文件作为参数的 SQL 过程的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24161944/