温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何快速插入百万数据

发布时间:2026-09-01 22:02:38 来源:亿速云 阅读:110 作者:小樊 栏目:数据库

“快速插入百万数据”通常出现在 数据库(MySQL / PostgreSQL / Oracle 等) 场景。下面按最常见、最有效的方式给你总结,并附示例。


一、通用核心原则(最重要)

  1. 减少事务提交次数
  2. 减少网络交互次数
  3. 关闭不必要的约束和日志
  4. 批量写入,而不是逐条 INSERT

二、MySQL 快速插入百万数据

✅ 方法 1:批量 INSERT(最推荐)

INSERT INTO user (name, age)
VALUES
('a', 1),
('b', 2),
('c', 3),
...
 LIMIT 每批 1万~10万;

✅ 建议:

  • 每批 1万~10万条
  • 循环提交,不要一次 100万

✅ 方法 2:LOAD DATA(最快)

LOAD DATA LOCAL INFILE 'data.csv'
INTO TABLE user
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

速度:百万级秒级完成


✅ 方法 3:关闭影响性能的选项

SET autocommit = 0;
SET unique_checks = 0;
SET foreign_key_checks = 0;

-- 插入数据

COMMIT;

三、PostgreSQL 快速插入

✅ COPY(最快)

COPY user(name, age)
FROM '/data/data.csv'
DELIMITER ','
CSV;

✅ 批量 INSERT

INSERT INTO user VALUES
('a',1),('b',2),('c',3);

四、Java / 程序层优化

// JDBC
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement(sql);

for (...) {
    ps.addBatch();
    if (i % 10000 == 0) {
        ps.executeBatch();
    }
}
ps.executeBatch();
conn.commit();

五、百万数据“造数据”技巧

INSERT INTO user (name, age)
SELECT CONCAT('u', id), RAND()*100
FROM (
  SELECT @i:=@i+1 id
  FROM information_schema.tables a,
       information_schema.tables b,
       (SELECT @i:=0) t
  LIMIT 1000000
) x;

六、不推荐的方式

❌ 单条 INSERT
❌ 每插入一条就 COMMIT
❌ 有触发器 / 外键 / 索引


七、你可以告诉我

  • 用的什么数据库?
  • 是真实业务数据,还是测试数据?
  • 单表还是多表?

我可以直接给你可执行的完整方案或脚本。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手