11
回答
mysql插入大量数据
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
问下大家,现在想测试一下数据库的性能,希望在数据库中插入大量数据比方说100万条, 插入数据不需要意义,请问如何进行插入
举报
寒熊
发帖于4年前 11回/1K+阅
共有11个答案 最后回答: 4年前

可以用load data命令批量导入,首先建立表,然后批量化数据

--- 共有 1 条评论 ---
寒熊是这样的,我现在手头上么现成的数据,能用什么方法随机生成数据到mysql中 4年前 回复

大量数据插入用 jdbc  preparestatement  batch

数据生成要看你建的表咯, 你建一个表 id字段 int型自动增长  再来一个int型的字段,用for循环100W次的 i 代替

public static void saveArticleList(List<ArticleBean> list) {
		Connection connection = DBUtil.getConnection(url,username,password);
		PreparedStatement ps = null;
		String sql = "insert into XXX(number) values(?)";
		try {
			int i = 0;
			connection.setAutoCommit(false);
			ps = connection.prepareStatement(sql);
			while (i<1000000) {
				i++;
				ps.setInt(1,i);
				ps.addBatch();
			}
			ps.executeBatch();
			connection.commit();
			ps.clearBatch();
			System.out.println("已经插入"+i+"条数据");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if (ps != null) {
				ps.close();
			}
		} catch (Exception e) {
			System.out.println("ps close exception: " + e.getMessage());
		}
		try {
			if (connection != null) {
				connection.close();
			}
		} catch (Exception e) {
			System.out.println("connection close exception: " + e.getMessage());
		}		
	}

写个存储过程:

DELIMITER $$

USE `test`$$

DROP PROCEDURE IF EXISTS `proc_data`$$

CREATE PROCEDURE `proc_data`(IN iteme INT)
BEGIN
DECLARE var INT DEFAULT 0;
START TRANSACTION;
WHILE var<iteme DO
INSERT INTO table_name(dealerid,NAME,brand,TYPE,kinds,quantity,price,publishday,limitdays,days,province_name) VALUES (4,'测试用户一','奥迪','A3',2,23,22,'2013-05-19 17:51:15','2013-05-20 17:51:15',1,'北京市');
SET var=var+1;
END WHILE;
COMMIT;
END$$

DELIMITER ;

调用方式:

call proc_data(10000)

引用来自“魔力猫”的答案

不需要意义?直接来个卡笛尔积就能出来好多好多
这个怎么弄呢?
--- 共有 1 条评论 ---
魔力猫你说了,不需要意义那么,insert... select就是。select查询几个表,连接无过滤条件,那么就是全交集了。 4年前 回复
顶部