我正在开发一个应用程序,每次启动app服务器时,都会在MSSQL数据库中插入XML文件的内容。
XML包含相关表的多个记录。存储的proc将XML文件内容作为(TEXT)参数,创建指针(sp_xml_preparedocument)&使用OPENXML插入表格。
我需要使用JDBC(或可能是SQLCMD)从XML文件所在的应用程序服务器执行该过程。
XML文件大约是160MB,现在我通过读取CallableStatement的大型String对象来发送XML文件,但它的时间/空间/资源消耗很大。
答案 0 :(得分:0)
我不知道这是否是公认的最佳做法,但如果我这样做,我会认为这可能是以下方法的候选人:
在这种情况下,不需要在内存中“传递”大量blob,因此依赖于SQL Server BCP加载技术的高级处理而不是MSXML。
在这种情况下,对SQL的调用是简单的sp调用,其参数指向文件。
如果BCP不是你的一杯茶,那么使用SSIS的类比解决方案也许可行。
最后,如果你必须使用XML文件,那么可能将文件的名称传递给SQL CLR程序,该程序将把它加载到SQL内存中。可能是有序的。