1、 jdbd采用批处理插入大量数据,速度还是相当的慢,一个拥有一个自增字段、三个字符串字段的表,往里面插入1w条数据消耗一分多钟。代码如下:
public class dbbatchdeal { /** * * @param conn jdbc链接 * @param tablename 表明 * @param lists 数据集 * @param n 每行字段个数 出去自增字段 * @param flag 第一列是否自增字段 * @return 是否成功 */ public boolean deal(connection conn,string tablename,arraylist lists ,int n,boolean flag){ stringbuffer sql = new stringbuffer(); sql.append(insert into ).append(tablename) .append( values(); sql=(flag==true?sql.append(null ,):sql); for(int i=0;i
结果如下:
java2sh内容如下:
import java.io.bufferedwriter;import java.io.file;import java.io.filenotfoundexception;import java.io.fileoutputstream;import java.io.ioexception;import java.io.outputstream;import java.io.outputstreamwriter;import java.io.writer;public class java2sh { /** * 对文件进行赋权 * @param infile 文件全路径 * @return runtime执行返回码 */ public int chmodrun(string infile) { int retcode = 0; try { runtime rtime = runtime.getruntime(); process child = rtime.exec(chmod 777 +infile); retcode=child.waitfor(); system.out.println(chmod :+retcode); } catch (exception e) { system.out.println(chmod failed +infile); e.printstacktrace(); } return retcode; } /** *执行脚本文件 * @param infile 文件全路径 * @return runtime执行返回码 */ public int shellfile(string infile) { int retcode = 0; try { runtime rtime = runtime.getruntime(); process child = rtime.exec(sh +infile); retcode=child.waitfor(); system.out.println(shell file :+retcode); } catch (exception e) { system.out.println(shell file failed +infile); e.printstacktrace(); } return retcode; } public void writedata() throws ioexception{//生成mysql2.txt string str=13311122,passwds,20130710235959; bufferedwriter out =new bufferedwriter(new outputstreamwriter(new fileoutputstream(new file(d:\\mysql2.txt)))); for(int i=0;i
其中shh.sh内容为: mysql -h localhost -u root -ppwd /dblog
loaddata.sql内容为:
use dbname;
load data infile '/mysql2.txt' into table testtable fields terminated by ',' (cardnum,cardpwd,times);
commit;
介于个人水平,贴出来仅供参考,欢迎告诉我更简便高效的方式,先谢过了。
