[ PROMPT_NODE_23514 ]
data-batch-inserts
[ SKILL_DOCUMENTATION ]
## 批量 INSERT 语句用于大规模数据
单独的 INSERT 语句开销很大。请在单个语句中批量处理多行数据,或使用 COPY 命令。
**错误做法(单独插入):**
sql
-- 每次插入都是一个单独的事务和往返
insert into events (user_id, action) values (1, 'click');
insert into events (user_id, action) values (1, 'view');
insert into events (user_id, action) values (2, 'click');
-- ... 再插入 1000 次
-- 1000 次插入 = 1000 次往返 = 速度慢
**正确做法(批量插入):**
sql
-- 在单个语句中插入多行
insert into events (user_id, action) values
(1, 'click'),
(1, 'view'),
(2, 'click'),
-- ... 每批次最多约 1000 行
(999, 'view');
-- 1000 行数据仅需一次往返
对于大规模导入,请使用 COPY:
sql
-- COPY 是批量加载最快的方式
copy events (user_id, action, created_at)
from '/path/to/data.csv'
with (format csv, header true);
-- 或者在应用程序中从 stdin 读取
copy events (user_id, action) from stdin with (format csv);
1,click
1,view
2,click
.
参考:[COPY](https://www.postgresql.org/docs/current/sql-copy.html)