您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

java处理较大数据量到mysql

2024/2/20 15:01:01发布23次查看
1、 jdbd采用批处理插入大量数据,速度还是相当的慢,一个拥有一个自增字段、三个字符串字段的表,往里面插入1w条数据消耗一分多钟。代码如下: public class dbbatchdeal {/** * * @param conn jdbc链接 * @param tablename 表明 * @param lists 数据集 * @
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 2、因为上面的方法处理的较慢,又想了个较为麻烦点儿的方式,用mysql的load data来导入数据。具体就是写段导入数据的脚本用java来执行,测试了下1w条记录插入的时间还是相当短的。
结果如下:
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;
介于个人水平,贴出来仅供参考,欢迎告诉我更简便高效的方式,先谢过了。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product