用xml作参数一次插入多条数据
2011-06-20 15:17
363 查看
1.存储过程方法:
declare @customers xml
set @customers='<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1'' /><cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />'
INSERT control.tb_ExternalEnterprise(BPNo,EnterpriseId,EnterpriseName)
SELECT R.c.value('@bpNo','CHAR(6)'),R.c.value('@MNo','VARCHAR(50)'),
R.c.value('@MName','NVARCHAR(30)')
FROM @customers.nodes('cus') R(c)
2.sql语句方法:
INSERT tb_ExternalEnterprise(BPNo,EnterpriseId,EnterpriseName)
SELECT b.*
FROM (select cast('<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1''/>
<cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />' as xml) a)t
cross apply(select R.c.value('@bpNo','CHAR(6)') as bpNo,
R.c.value('@MNo','VARCHAR(50)') as MNo,
R.c.value('@MName','NVARCHAR(30)') as MName
from t.a.nodes('cus') R(c)) b
System.Text.StringBuilder sb = new System.Text.StringBuilder("'");
for (int i = 0; i < count; i++)
{
sb.AppendFormat("<cus bpNo='{0}' />", i.ToString());//Guid.NewGuid().ToString());
}
sb.Append("'");
************************* SqlBulkCopy ********************************
private static long SqlBulkCopyInsert()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
DataTable dataTable = GetTableSchema();
string passportKey;
for (int i = 0; i < count; i++)
{
passportKey = i.ToString();//Guid.NewGuid().ToString();
DataRow dataRow = dataTable.NewRow();
dataRow[0] = passportKey;
dataTable.Rows.Add(dataRow);
}
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
sqlBulkCopy.DestinationTableName = "Passport";
sqlBulkCopy.BatchSize = dataTable.Rows.Count;
SqlConnection sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
if (dataTable != null && dataTable.Rows.Count != 0)
{
sqlBulkCopy.WriteToServer(dataTable);
}
sqlBulkCopy.Close();
sqlConnection.Close();
stopwatch.Stop();
return stopwatch.ElapsedMilliseconds;
}
declare @customers xml
set @customers='<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1'' /><cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />'
INSERT control.tb_ExternalEnterprise(BPNo,EnterpriseId,EnterpriseName)
SELECT R.c.value('@bpNo','CHAR(6)'),R.c.value('@MNo','VARCHAR(50)'),
R.c.value('@MName','NVARCHAR(30)')
FROM @customers.nodes('cus') R(c)
2.sql语句方法:
INSERT tb_ExternalEnterprise(BPNo,EnterpriseId,EnterpriseName)
SELECT b.*
FROM (select cast('<cus bpNo=''15'' MNo=''商户ID1'' MName=''商户名称1''/>
<cus bpNo=''15'' MNo=''商户ID2'' MName=''商户名称2'' />' as xml) a)t
cross apply(select R.c.value('@bpNo','CHAR(6)') as bpNo,
R.c.value('@MNo','VARCHAR(50)') as MNo,
R.c.value('@MName','NVARCHAR(30)') as MName
from t.a.nodes('cus') R(c)) b
System.Text.StringBuilder sb = new System.Text.StringBuilder("'");
for (int i = 0; i < count; i++)
{
sb.AppendFormat("<cus bpNo='{0}' />", i.ToString());//Guid.NewGuid().ToString());
}
sb.Append("'");
************************* SqlBulkCopy ********************************
private static long SqlBulkCopyInsert()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
DataTable dataTable = GetTableSchema();
string passportKey;
for (int i = 0; i < count; i++)
{
passportKey = i.ToString();//Guid.NewGuid().ToString();
DataRow dataRow = dataTable.NewRow();
dataRow[0] = passportKey;
dataTable.Rows.Add(dataRow);
}
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
sqlBulkCopy.DestinationTableName = "Passport";
sqlBulkCopy.BatchSize = dataTable.Rows.Count;
SqlConnection sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
if (dataTable != null && dataTable.Rows.Count != 0)
{
sqlBulkCopy.WriteToServer(dataTable);
}
sqlBulkCopy.Close();
sqlConnection.Close();
stopwatch.Stop();
return stopwatch.ElapsedMilliseconds;
}
相关文章推荐
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- MyBatis第三种方式,xml和接口的结合,以及如何获得插入数据的返回参数、传入空的参数
- SQL Server 2005中三种插入XML数据的方法
- java实现将xml数据插入到oracle数据库的表中
- SQL中一次插入多条数据
- 学生数据插入XML
- 实体化XML,实现多条数据多个表一次性插入
- mysql中max_allowed_packet参数的配置方法,插入图片Blob数据出错
- XML+DOM将元素的数据依次插入到表格中
- 使用Csharp插入数据到XML文档
- Ajax实现xml文件数据插入数据库(三)---javabean实现数据库插入
- mysql一条SQL一次插入大容量数据
- xml数据作为表单参数在网络传递也需要用urlencode处理
- 使用JMeter进行一次简单的带json数据的post请求测试,json可配置参数
- SQL Server 2008中一次插入多行数据语法。
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
- pgsql一次插入多条数据
- 【SQL】如何一次(一条SQL语句)向ORACLE中插入多组/多条数据,不同于mysql
- DataSet数据插入到XML中
- SQL Server 2005学习笔记之插入大规模的XML文件数据