簡體   English   中英

使用C#將Bulk Xml(XElement)數據插入Sql server Table的最佳方法是什么?

[英]What is the best way to insert Bulk Xml (XElement) data to Sql server Table using C#?

我有一個XElement對象,我需要使用C#將其插入到Sql Server表中。 (XML文件包含超過2萬條記錄)

你能幫幫我嗎? 或者任何替代?

XElement output = XElement.Load("c:\\temp\\input.xml");
IEnumerable<XElement> users = output.Elements(); 

        DataTable dt = new DataTable();
                dt.Columns.Add("CLIENT_INPUT_MHS_ID", typeof(int));
                dt.Columns.Add("CLIENT_INPUT_MHS_GUID",typeof(Guid));
                dt.Columns.Add("ITEM", typeof(string));
                dt.Columns.Add("ITEM_ID", typeof(int));
                dt.Columns.Add("ITEM_NUMBER", typeof(string));
                dt.Columns.Add("CATEGORY", typeof(string));        

        foreach (XElement str in users)
        {
            DataRow dr = dt.NewRow();
            foreach (XElement node in str.Elements())
            {
                dr[node.Name.LocalName] = node.Value;
            }

            dt.Rows.Add(dr);
        }
SqlBulkCopy bulkCopy = new SqlBulkCopy("ConnectionString...");
 using (bulkCopy )
                {
                    bulkCopy .BulkCopyTimeout = 0;
                    bulkCopy .ColumnMappings.Add(dt.Columns[0].ColumnName, "CLIENT_INPUT_MHS_ID");
                    bulkCopy .ColumnMappings.Add(dt.Columns[1].ColumnName, "CLIENT_INPUT_MHS_GUID");
                    bulkCopy .ColumnMappings.Add(dt.Columns[2].ColumnName, "ITEM");
                    bulkCopy .ColumnMappings.Add(dt.Columns[3].ColumnName, "ITEM_ID");
                    bulkCopy .ColumnMappings.Add(dt.Columns[4].ColumnName, "ITEM_NUMBER");
                    bulkCopy .ColumnMappings.Add(dt.Columns[5].ColumnName, "CATEGORY");
                    bulkCopy.DestinationTableName = "DestinationTableName";                   
                    bulkCopy.WriteToServer(dt); }



Its working fine with my scenario.

我建議,首先從XML加載數據,然后加載DataSet,然后再進行SQL批量復制。 事情會變得容易然后繼續。

將XML數據加載到DataSet可以按如下方式完成:

DataSet ds = new DataSet();
ds.ReadXml("xml file path");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM