
具体是这样使用的:
循环2000条数据例如数据被装到了一个名叫dataList的List<Map<String,String>>中,那么批量更新就是这样执行的
Map map = null;
String data1= "";
String data2 = "";
String sql = insert into biao values(,);
PreparedStatement preStmt = connprepareStatement(sql);
for(i = 0;i<dataListsize();i++){
map = dataListget(i);
data1=mapget("data1");
data2 = mapget("data2");
preStmtsetString(1,data1);
preStmtsetString(2, data2);
preStmtaddBatch();
}
preStmtexecuteBatch();
preStmtclearBatch();
首先, 插入上万条数据,对于数据库来说并不是“很大”的工作量,一般配置的笔记本电脑都可以在1分钟内完成。 所以最简单、最灵活的办法还是写SQL语句。
如果不希望DB编译器每次执行都编译SQL的话,可以使用存储过程,直接调用,性能上会好很多。也比较简单。
(几万条数据怎么地也得要时间去处理,所以不可能特别快的。)
如果由于各种原因,导致这个插入还是很慢, 而且你的MYSQL又是50以上版本的话,可以使用BulkCopy来进行批量 *** 作。
BulkCopy的原理就是Client直接把一个数组(DataTable)传给DB,然后传入表名,所有的编译、 *** 作都由DB自己完成,效率很高。
引用MySqlDatadll , 调用MysqlBulkCopy函数即可。
这个函数在处理海量数据插入的时候效率尤为明显, 小量数据反而没什么优势,而且由于传入的DataTable格式必须和表的字段一模一样(空的列也要传进去),导致C#要写很多代码来构造这个数组,所以要你自己权衡用还是不用。
我在自己的电脑上批量插入一亿条数据,Insert写法大概需要1小时,BulkCopy大概只需要5分钟。
windows系统,用命令行登入mysql后,使用通配符进行匹配:
source sql
linux或mac,建议你写脚本,或者使用管道
cat asql bsql | mysql -u root -proot test
以上就是关于使用JDBC在MySQL数据库中如何快速批量插入全部的内容,包括:使用JDBC在MySQL数据库中如何快速批量插入、c#中往mysql里批量插入上万条数据,有比较高效的方法吗、请教大神们如何批量地往mysql数据库导入大量的sql文件呢 sqlyog ...等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)