1. 程式人生 > >java 使用jdbc向mysql資料庫中插入1億條資料

java 使用jdbc向mysql資料庫中插入1億條資料

<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;