java 使用jdbc向mysql資料庫中插入1億條資料
阿新 • • 發佈:2018-12-25
<span style="font-size:14px;"><span style="font-size:14px;">package com.ddx.zhang; import java.sql.SQLException; import java.util.UUID; public class JDBCTest { public static void main(String[] args) throws SQLException { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } java.sql.Connection conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "123456"); java.sql.Statement stmt = conn.createStatement(); int total = 10000; System.out.println("====start====="); long start = System.currentTimeMillis(); // 測試插入資料庫的功能: for (int n = 0; n < 1000; n++) { StringBuffer sBuffer = new StringBuffer(" insert into student(user_name) values "); for (int i = 0; i < total; i++) { String userName = UUID.randomUUID().toString(); if (i == total - 1) { sBuffer.append("('" + userName + "');"); } else { sBuffer.append("('" + userName + "'),"); } } System.out.println("第" + n + "次插入1萬條資料!"); stmt.executeUpdate(sBuffer.toString()); } long end = System.currentTimeMillis(); System.out.println("run time:" + (end - start)); stmt.close(); conn.close(); } } </span></span>
執行結束所需要的時間:247828ms,為247.828s=4.13m
將每次插入條數total修改為25000,n<400 ,執行結束所需要的時間為:209958ms,為209.958s=3.4993m
比較之後,選擇用每次插入25000條,迴圈400次的方式插入,執行10次,既可插入1億條資料。總花費時間也就10幾分鐘
表的sql指令碼如下:
CREATE TABLE `student` (
`id` bigint(20) NOT NULL auto_increment COMMENT '主鍵',
`user_name` varchar(255) default NULL COMMENT '姓名',
`add_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP COMMENT '新增時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;