mysql 远程批量插入速度很慢,求解

wgg333 2012-08-20 11:42:34
在本地数据库可以处理的很快,可以插入远程服务器就很慢

我这样写批量处理代码有问题吗??
String connString="jdbc:mysql://xxxx:3306/db?rewriteBatchedStatements=true";;
BufferedReader br=new BufferedReader(new FileReader("src/222.txt"));
String line="";
con=(Connection) connpool.getConnection();
con.setAutoCommit(false);

PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into jp115 (a,b,c,d) values(?,?,?,?)");
// PreparedStatement pst = (PreparedStatement) con.prepareStatement(sqlstr,PreparedStatement.RETURN_GENERATED_KEYS);



int j=1;

while((line=br.readLine())!=null){

pst.setString(1, line.split(":")[0]);
pst.setString(2, line.split(":")[1]);
pst.setString(3, line.split(":")[2]);
pst.setString(4, line.split(":")[3]);
pst.addBatch();
if (j%500==0){


pst.executeBatch();

con.commit();

pst.clearBatch();

System.out.print(j+"提交成功");
}


j++;
}
...全文
366 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgg333 2012-08-27
  • 打赏
  • 举报
回复
网络没问题的
222.txt 里有30万行的数据,我有很多这样的文件要处理
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

有多少条数据、多少行?

实在不行使用 LOAD DATA FIIFILE 导入 具体使用方法请百度之、

有文件的话最好使用 LOAD DATA FIIFILE

性能感觉会消耗在bufferreader上、

如果不算从文件读出的话、 你这批量插入已经算是优化不错了、
[/Quote]

打错字了 load data infile



可以把222.txt文件上传到服务器上。然后在load data local infile 。或者直接远程load data infile也可以。

  • 打赏
  • 举报
回复
有多少条数据、多少行?

实在不行使用 LOAD DATA FIIFILE 导入 具体使用方法请百度之、

有文件的话最好使用 LOAD DATA FIIFILE

性能感觉会消耗在bufferreader上、

如果不算从文件读出的话、 你这批量插入已经算是优化不错了、
lzh_me 2012-08-20
  • 打赏
  • 举报
回复
sqlserver 也有类似的情况,当时是因为sql语句的原因,你可以看看是否是网络的原因或者是你sql本身的原因。
临轩 2012-08-20
  • 打赏
  • 举报
回复
会不会是网络问题啊

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧