MySQL 批量插入demo

Mysql 批量插入demo代码

public static void main(String[] args) throws ClassNotFoundException, SQLException {
		final String url = "jdbc:mysql://127.0.0.1/wvp?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
		final String name = "com.mysql.cj.jdbc.Driver";
		final String user = "root";
		final String password = "1234";
		Connection conn = null;
		// 指定连接类型
		Class.forName(name);
		// 获取连接
		conn = DriverManager.getConnection(url, user, password);
		if (conn != null) {
			System.out.println("获取连接成功");
			// 插入操作
			batchInsert(conn);
		} else {
			System.out.println("获取连接失败");
		}
	}

	public static void batchInsert(Connection conn) {
		// 开始时间
		Long begin = System.currentTimeMillis();
		// sql前缀
		String sqlPrefix = "INSERT INTO student (name, age) VALUES ";
		try {
			// 保存sql后缀
			StringBuffer sqlSuffix = new StringBuffer();
			// 设置事务为非自动提交
			conn.setAutoCommit(false);
			// 准备执行语句
			PreparedStatement pst = (PreparedStatement) conn.prepareStatement(" ");
			// 外层循环,总提交事务次数
			for (int i = 1; i <= 100; i++) {
				sqlSuffix = new StringBuffer();
				// 第j次提交步长
				for (int j = 1; j <= 100000; j++) {
					// 构建SQL后缀
					sqlSuffix.append("('" + "cxx" + j + "'," + 1 + "),");
				}
				// 构建完整SQL
				String sql = sqlPrefix + sqlSuffix.substring(0, sqlSuffix.length() - 1);
				// 添加执行SQL
				pst.addBatch(sql);
				// 执行操作
				pst.executeBatch();
				// 提交事务
				conn.commit();
				// 清空上一次添加的数据
				sqlSuffix = null;
			}
			// 头等连接
			pst.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		// 结束时间
		Long end = System.currentTimeMillis();
		// 耗时
		System.out.println("1000万条数据插入花费时间 : " + (end - begin) + "ms");
		System.out.println("插入完成");
	}

猜你喜欢

转载自blog.csdn.net/qq_21454973/article/details/123797025
今日推荐