Bog*_*anB 15 c# xml sql-server insert stream
假设我有一个这样的表:
CREATE TABLE [dbo].[TBL_XML]
(
[XmlFileID] [BIGINT] IDENTITY (1, 1) NOT NULL,
[FileName] [NVARCHAR](500) NULL,
[XmlData] [XML] NULL,
[DateCreated] [DATETIME] NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)
我目前用来填充表格的方法是这样的:
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = @"INSERT INTO [dbo].[TBL_XML]
( [XmlData] ,
[FileName] ,
[DateCreated]
)
VALUES (@XMLData, @FileName, GETDATE())";
using (var xmlReader = new XmlTextReader(new FileStream(item.XmlFileName, FileMode.Open)))
{
cmd.Parameters.Add("@FileName", SqlDbType.NVarChar, 500).Value = System.IO.Path.GetFileName(item.XmlFileName);
cmd.Parameters.Add(
new SqlParameter("@XMLData", SqlDbType.Xml)
{
Value = new SqlXml(xmlReader)
});
SetConnectionParameters(cmd);
cmd.ExecuteScalar());
}
}
Run Code Online (Sandbox Code Playgroud)
但这不适用于非常大的XML,因为整个文件都加载到内存中,我得到了OutOfMemory异常.
从运行在与服务器不同的机器上的.net应用程序中将大(> 100MB)XML文件插入XMLData列的最佳方法是什么?
批量插入是不可能的,因为SQL服务器将无法访问我的XML文件.