Convert CSV to SQL
Drop your CSV file and pick your database to get a SQL script with CREATE TABLE and INSERT statements. Each column gets a type, and every fix is listed with its row and column.
5 rows converted, 8 fixes, none rejected
| Row | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- Written by IntoSQL for PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE ventas_2024 (
folio text NOT NULL,
cliente text NOT NULL,
ciudad text NOT NULL,
fecha date NOT NULL,
importe numeric(6,2),
pagado boolean NOT NULL
);
INSERT INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES
('00412', 'Peña Muñoz', 'Mérida', '2024-02-15', 1234.50, TRUE),
('00413', 'José Ángel Ruiz', 'León', '2024-02-03', 99.90, FALSE),
('00414', 'Zoë Ortíz', 'Querétaro', '2024-02-29', NULL, TRUE),
('00415', 'Ñuño Castañeda', 'Oaxaca', '2024-02-28', 7.25, FALSE),
('00416', 'Iñaki Olaizola', 'Mazatlán', '2024-03-11', 980.75, TRUE);
COMMIT;
Fixes
- The file was written in windows‑1252; it was converted to UTF-8.
- The header is on row 4; the rows above it were left out.
- Row 10 ("TOTAL") is a total, so it was left out.
- Leading zeros kept in "Folio": 00412 stays 00412, stored as text.
- 15/02/2024 proves the dates in "Fecha" are day-first, so 03/02/2024 is read as 2024‑02‑03.
- Numbers in "Importe" use a decimal comma: 1.234,50 is read as 1234.50.
- N/A in "Importe" read as empty (1 of 5 values).
- "Pagado" holds yes and no words (sí, no), stored as boolean.
Your file is converted on this computer and never uploaded.
Other samples:
One CSV file, six databases
The sample above, ventas_2024.csv, and the type each of its columns gets in each database.
| In the file | First value | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|---|
| Folio | 00412 | text | varchar(8) | varchar(8) | TEXT | nvarchar(8) | VARCHAR2(8 CHAR) |
| Cliente | Peña Muñoz | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| Ciudad | Mérida | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| Fecha | 15/02/2024 | date | date | date | DATE | date | DATE |
| Importe | 1.234,50 | numeric(6,2) | decimal(6,2) | decimal(6,2) | NUMERIC(6,2) | decimal(6,2) | NUMBER(6,2) |
| Pagado | sí | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
Load the script into your database
The download is a plain .sql file. Each database runs it with its own tools.
PostgreSQL
psql -v ON_ERROR_STOP=1 -d mydb -f ventas_2024.postgresql.sqlON_ERROR_STOP makes psql stop at the first error. The script runs in one transaction, so a failed load leaves the database as it was.
MySQL
mysql --default-character-set=utf8mb4 mydb < ventas_2024.mysql.sqlThe script sets utf8mb4 itself; the flag makes the client send it the same way, so accents arrive intact.
MariaDB
mariadb --default-character-set=utf8mb4 mydb < ventas_2024.mariadb.sqlThe script sets utf8mb4 itself; the flag makes the client send it the same way, so accents arrive intact.
SQLite
sqlite3 ventas_2024.db < ventas_2024.sqlite.sqlThe database file is created if it doesn't exist. The converter also downloads a ready .sqlite database, with no command at all.
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i ventas_2024.sql_server.sql-f 65001 reads the file as UTF-8, so accents and ñ arrive as written.
Oracle
sqlplus user@//localhost/mydb @ventas_2024.oracle.sqlThe script turns off substitution variables (SET DEFINE OFF), so an ampersand in your data stays an ampersand.
The command line loads files straight into a SQLite database for free. With IntoSQL Pro, it and the desktop app also load into PostgreSQL, MySQL and MariaDB. For SQL Server and Oracle, run the script.
What to know about CSV files and each database
What IntoSQL reads in CSV files
- The encoding is detected, Windows-1252 and UTF-16 included, so accents and ñ arrive intact.
- The separator is detected: comma, semicolon, tab or vertical bar. With a semicolon, decimal commas like 1.234,50 are read as numbers.
- Quoted values can hold separators and line breaks.
What to know about each database
- Pick the database once the file is open: each one gets the types it supports.
How each kind of value is stored in each database
| Value | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| Yes and no | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Whole numbers | integer | int | int | INTEGER | int | NUMBER(10) |
| Large whole numbers | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| Decimals | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| Floating-point numbers | double precision | double | double | REAL | float | BINARY_DOUBLE |
| Dates | date | date | date | DATE | date | DATE |
| Times of day | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| Dates with a time | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| Dates with a time and offset | timestamptz | datetime(6)datetime | datetime(6)datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| Text | text | varchar(n)textmediumtextlongtext | varchar(n)textmediumtextlongtext | TEXT | nvarchar(n)nvarchar(max) | VARCHAR2(n CHAR)CLOB |
Questions about CSV to SQL
Not answered here? Write to us from the contact page and a person replies. Contact page
How do I convert CSV to SQL?
Drop your file on the converter at the top of this page and choose your database: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server or Oracle. Each one gets the types it supports. Download the script and run it in your database.
What if my CSV uses semicolons or tabs?
The separator is detected: comma, semicolon, tab or vertical bar. You can also set it under More options. With a semicolon, decimal commas such as 1.234,50 are read as numbers.
Which types does it use in each database?
Each database gets its own: yes and no values are boolean in PostgreSQL, tinyint(1) in MySQL and MariaDB, bit in SQL Server and NUMBER(1) in Oracle. The table on this page lists every kind of value.
Does it keep leading zeros?
Yes. A code such as 00412 stays text in every database, written as '00412', so no zero is lost.
Can it load the data without a script?
Yes. The command line loads into SQLite for free, and with IntoSQL Pro the desktop app and the command line load into PostgreSQL, MySQL and MariaDB. For SQL Server and Oracle, run the script.
How big can the CSV file be?
The browser reads a CSV as it streams in, so files of several gigabytes work. On an Apple M4 laptop the command line converts a 174 MB CSV of a million rows in under a second.