发布时间:2010-09-01 16:26 来源:未知
Sql批量插入和删除的方法,相信绝大多数的SQL用户都会用到,下面将为您介绍SQL语句如何写批量插入和批量删除,供您参考,希望对您有搜帮助。
1.批量删除很简单:
DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68) --sql2005下运行通过
Code highlighting produced by Actipro CodeHighlighter (freeware)
--> sql写法:
INSERT INTO TestTable SELECT 1, 'abc' UNION SELECT 2, 'bcd' UNION SELECT 3, 'cde'
oracle写法:
INSERT INTO TestTable SELECT 1, 'abc' From daul UNION SELECT 2, 'bcd' From daul
但是要使用上述方法来进行批量插入的话,需要两个条件:
1、表不能有主键或者主键是数据库默认的(sql用自动递增列,oracle用序列)
2、组合sql语句时只能直接用字符串连接,不能用参数化sql语句的写法(就是在组合的sql中用@parm做占位符,再给Command对象添加Parameter)
以上两条任意一条不满足,效率的提高都不明显。
由于是考虑到大数据量的批量插入,于是我想到了ADO.NET2.0的一个新的特性:SqlBulkCopy。有关这个的性能,很早之前我是亲自做过性能测试的,效率非常高。
代码
private static long SqlBulkCopyInsert()
DataTable dataTable = CreateDataTable();
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
if (dataTable!=null && dataTable.Rows.Count!=0)
}
Sql批量插入和删除的方法,相信绝大多数的SQL用户都会用到,下面将为您介绍SQL语句如何写批量插入和批量删除,供您参考,希望对您有搜帮助。
1.批量删除很简单:
DELETE FROM TestTable WHERE ID IN (1, 3, 54, 68) --sql2005下运行通过
Code highlighting produced by Actipro CodeHighlighter (freeware)
--> sql写法:
INSERT INTO TestTable SELECT 1, 'abc' UNION SELECT 2, 'bcd' UNION SELECT 3, 'cde'
oracle写法:
INSERT INTO TestTable SELECT 1, 'abc' From daul UNION SELECT 2, 'bcd' From daul
Code highlighting produced by Actipro CodeHighlighter (freeware)
-->private static long SqlBulkCopyInsert()
DataTable dataTable = CreateDataTable();
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
if (dataTable!=null && dataTable.Rows.Count!=0)
}