mysql批量插入数据
2017-07-31 10:11
106 查看
package gt.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; public class JdbcMysql {
//list集合里是sql语句 public void run(List<String> insertSqLs) { // 声明Connection对象 Connection con = null; ResultSet rs = null; // 驱动程序名 String driver = "com.mysql.jdbc.Driver"; // URL指向要访问的数据库名mydata ?useUnicode=true&characterEncoding=utf-8格式为UTF-8 String url = "jdbc:mysql://xxx.xxx.xx.xxx:xxxx/gtweb_zs1?useUnicode=true&characterEncoding=utf-8"; // MySQL配置时的用户名 String user = "root"; // MySQL配置时的密码 String password = "xxxxx"; // 遍历查询结果集 try { // 加载驱动程序 Class.forName(driver); // 1.getConnection()方法,连接MySQL数据库!! con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) System.out.println("成功连接数据源!"); // 2.创建statement类对象,用来执行SQL语句!! Statement statement = con.createStatement();
//自动提交设为false,批处理一定要写 con.setAutoCommit(false); // 要执行的SQL语句 // 3.ResultSet类,用来存放获取的结果集!! final int batchSize = 2000; //一次批处理提交2000条 int count = 0; for (String string : insertSqLs) { System.out.println(string); statement.addBatch(string); if(++count % batchSize == 0) {
//一次执行 statement.executeBatch(); con.commit(); System.out.println("一次提交成功!"); } } statement.executeBatch(); con.commit(); System.out.println("全部成功"); }catch (Exception e) { e.printStackTrace(); try { if(con != null){ con.rollback(); } } catch (SQLException e1) { e1.printStackTrace(); } } finally { try { if(rs != null){ rs.close(); } if(con != null){ con.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }