发表于: 2017-07-09 20:34:23
5 1269
今天完成的事情: (在编辑)
终于完成了,看了无数的代码事例,终于找到一个适合自己的了。基础太差,一开始怎么都无法实现,因为好多不知道的报错导致耽误时间太久了。看了师兄的日报得知师兄们是构造线程来实现的。那样应该更快。我用了和普通的jDBC批量插入。同时写一下老大的提问,貌似这个东西很重要的说。
/**
* Created by PC on 2017/7/9.
*/
/**
* Created by PC on 2017/7/9.
*/
/**
* Created by PC on 2017/7/9.
*/
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
class HelloJava{
private String sql="INSERT INTO db_test (param1,param2,param3,param4,param5) VALUES (?,?,?,?,?)";
private String charset="utf-8";
private String connectStr="jdbc:mysql://*******.mysql.rds.aliyuncs.com:3306/db1";
private String username="root";
private String password="*********";
private void doStore() throws ClassNotFoundException, SQLException, IOException {
Class.forName("com.mysql.jdbc.Driver");
connectStr += "?useServerPrepStmts=false&rewriteBatchedStatements=true";//此处是测试高效批次插入,去掉之后执行时普通批次插入
Connection conn = (Connection) DriverManager.getConnection(connectStr, username,password);
conn.setAutoCommit(false); // 设置手动提交
int count = 0;
PreparedStatement psts = conn.prepareStatement(sql);
String line = null;
Date begin=new Date();
for(int i=0;i<=5000000;i++){
psts.setString(1, i+"param1");
psts.setString(2, i+"param2");
psts.setString(3, i+"param3");
psts.setString(4, i+"param4");
psts.setString(5, i+"param5");
psts.addBatch(); // 加入批量处理
count++;
if(i%100000==0){//可以设置不同的大小;如50,100,500,1000等等
psts.executeBatch();
conn.commit();
psts.clearBatch();
}
}
psts.executeBatch(); // 执行批量处理
conn.commit(); // 提交
Date end=new Date();
System.out.println("数量="+count);
System.out.println("运行时间="+(end.getTime()-begin.getTime()));
conn.close();
}
public static void main(String[] args) {
try {
new HelloJava().doStore();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
老大的问题:
1.怎么查找资料?
答:对于一个菜鸡来说,查找资料很重要。在修真院这半个多月中。查找资料不仅可以通过百度谷歌,还有的师兄告诉我,其实每个软件啊,都有一个叫帮助文档的东西。还可以利用文档找寻自己所需的资料。还有找书籍,还有就是问,就是开口问,在敏捷开发和职业素养中有提到这么个东西。其实这个东西使用任何职业。
2.怎么定位问题:
答:定位问题可以要确定好自己的问题点和关键字先。现在自己也不太清楚,以前是个学渣,在学习上根本没有任何概念。有的只是自己的经验。然而并不够。就好像在任务1中,有好多个任务点,自己在搜索的时候,经常往其他地方搜索。导致花了大量时间在不该找得地方花时间了。
比如这个向数据库插入大量数据的问题,在之前我是学习到插入数据只知道单条数据插入,也不知道怎么插入大量的数据,我就搜索 向数据库插入100W数据
找到了这些我看不懂的,对于我来说难度特别大的。
在搜索的时候应该想好我的问题所在,或者说有没有什么关键字。
现在我知道搜这个应该这样搜 jdbc 批量插入数据 java 这样才比较能在百度上找到自己所需的资料
3.怎么解决问题:
答:解决问题可以通过寻求他人帮助,和自己经过网络搜索答案,多方结合,然后吧问题记录下来
4.怎么重构代码:
答:没了解过
5.怎么选择框架:
答:正在学习当中.对于我来说暂时没得选,因为没学好
6.怎么测试:
答:用junit4测试,还有学习的单点调试。设置断点测试
明天的计划:
遇到的问题:
收获:终于搞定了一个插入大量数据的code了,很开森。
评论