IT技术网www.itjs.cn

当前位置:首页 > 数据库 > MySQL > Sql批量插入删除(1)

Sql批量插入删除(1)

发布时间: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。有关这个的性能,很早之前我是亲自做过性能测试的,效率非常高。

Sql批量插入删除(1)代码

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)

}