CSV to PostgreSQL
Turn a CSV export into a PostgreSQL table: a CREATE TABLE with sensible types and INSERT statements you can run as they are.
CREATE TABLE imported_rows ( id INTEGER NOT NULL, email VARCHAR(32) NOT NULL, signup_date DATE NOT NULL, plan VARCHAR(16) NOT NULL, monthly_fee NUMERIC NOT NULL, is_active BOOLEAN NOT NULL ); INSERT INTO imported_rows (id, email, signup_date, plan, monthly_fee, is_active) VALUES (1, 'ada@example.com', '2026-01-14', 'pro', 29.00, TRUE), (2, 'grace@example.com', '2026-02-02', 'free', 0, TRUE), (3, 'O''Brien, Kate', '2026-02-19', 'team', 99.50, FALSE);
Detected columns
Types are inferred from every value in the column. Override any that are wrong: zip codes and phone numbers with leading zeros stay text on purpose.
| Column | Type | Nullable | Longest value |
|---|---|---|---|
id | no | 1 | |
email | no | 17 | |
signup_date | no | 10 | |
plan | no | 4 | |
monthly_fee | no | 5 | |
is_active | no | 5 |
Big file? Use PostgreSQL’s bulk loader
Copy just the CREATE TABLE statement from the output above, run it, then load the whole file straight into the new table:
\copy imported_rows FROM 'data.csv' WITH (FORMAT csv, HEADER true)
\copy runs in psql and reads the file from your machine; plain COPY … FROM reads a file on the database server and needs superuser or pg_read_server_files.
Other databases
CSV to MySQL · CSV to SQL Server · CSV to SQLite · CSV to Oracle · JSON to SQL
Questions
How do I convert a CSV file to PostgreSQL INSERT statements?
Paste the CSV or open the file, check the detected column types, and copy or download the script. It contains a PostgreSQL CREATE TABLE (optional) followed by multi-row INSERT statements in batches you choose.
How do I import a large CSV into PostgreSQL?
For more than about 100,000 rows, use the bulk loader shown on this page. It is much faster than running INSERT statements. Generate the CREATE TABLE here, then bulk-load the file into it.
Which PostgreSQL data types are used?
Whole numbers become integer types, decimals become exact numeric types (never floating point), true/false values become booleans, ISO dates and timestamps become date/time types, and everything else becomes a text type sized from the longest value. You can override any column.
Is my file uploaded?
No. The CSV is parsed and converted in your browser, and nothing is sent to a server.
Related tools
- CSV to SQLCREATE TABLE with inferred types plus batched INSERT statements.
- SQL Data TypesThe same type across MySQL, PostgreSQL, SQL Server, Oracle and SQLite.
- ER Diagram GeneratorPaste CREATE TABLE statements or DBML and get a draggable crow’s-foot diagram.
- JSON to SQLFlatten a JSON array of objects into a table and INSERTs.