Files
findyourpilot/.agent/skills/supabase-postgres-best-practices/references/data-batch-inserts.md
2026-03-02 21:16:26 +01:00

1.3 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
Batch INSERT Statements for Bulk Data MEDIUM 10-50x faster bulk inserts batch, insert, bulk, performance, copy

Batch INSERT Statements for Bulk Data

Individual INSERT statements have high overhead. Batch multiple rows in single statements or use COPY.

Incorrect (individual inserts):

-- Each insert is a separate transaction and round trip
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 more individual inserts

-- 1000 inserts = 1000 round trips = slow

Correct (batch insert):

-- Multiple rows in single statement
insert into events (user_id, action) values
  (1, 'click'),
  (1, 'view'),
  (2, 'click'),
  -- ... up to ~1000 rows per batch
  (999, 'view');

-- One round trip for 1000 rows

For large imports, use COPY:

-- COPY is fastest for bulk loading
copy events (user_id, action, created_at)
from '/path/to/data.csv'
with (format csv, header true);

-- Or from stdin in application
copy events (user_id, action) from stdin with (format csv);
1,click
1,view
2,click
\.

Reference: COPY