繁体   English   中英

调用以大XML文件作为参数的MSSQL过程的最佳方法是什么?

[英]What is the best approach to invoke a MSSQL procedure, which takes a large XML file as an argument?

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

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

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

XML文件大约有160MB,现在我通过读取较大的String对象的形式将XML文件发送给CallableStatement ,但它非常耗时/占空间/耗资源。

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

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

在这种情况下,无需“传递”内存中的大量Blob,从而无需依赖MSXML即可依赖SQL Server BCP加载技术的高级处理。

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


如果BCP不是您的最佳选择,那么使用SSIS的类似解决方案也许可行。


最后,如果必须使用XML文件,则可以按顺序将文件名传递给SQL CLR过程,该过程会将其加载到SQL内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM