一、JDBC的批量插入
JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等。
我用Mysql5.1.5的JDBC driver 分别对三种比较常用的方法做了测试
方法一,使用PreparedStatement加批量的方法
Java代码
package com.liby.data.collection.command.impala;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @Author: 宋忠瑾
* @Description:
* @Date: Create in 16:06 2021/9/9
*/
public class test {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.0.111:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false", "root", "123456");
conn.setAutoCommit(false);
String sql = "DELETE FROM `cdp_table` WHERE table_cname = ? ";
PreparedStatement prest = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
long timeMillis = System.currentTimeMillis();
for (int x = 0; x < 1111; x++) {
prest.setString(1, "ee47eadbede354a1:74a0fb3b00000000");
prest.addBatch();
}
prest.executeBatch();
conn.commit();
conn.close();
long timeMillis1 = System.currentTimeMillis();
long l = timeMillis1 - timeMillis;
System.out.println("耗时:" + l + "ms");
} catch (
SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
}