Convertir CSV a SQL
Suelta tu archivo CSV y elige tu base de datos para obtener un script SQL con sentencias CREATE TABLE e INSERT. Cada columna recibe un tipo, y cada corrección se detalla con su fila y columna.
5 filas convertidas, 8 correcciones, ninguna rechazada
| Fila | ||||||
|---|---|---|---|---|---|---|
| 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;
Correcciones
- El archivo estaba escrito en windows‑1252; se convirtió a UTF-8.
- El encabezado está en la fila 4; las filas de arriba se dejaron fuera.
- La fila 10 ("TOTAL") es un total, así que se dejó fuera.
- Se conservaron los ceros a la izquierda en "Folio": 00412 sigue siendo 00412, guardado como texto.
- 15/02/2024 demuestra que las fechas de "Fecha" llevan el día primero, así que 03/02/2024 se lee como 2024‑02‑03.
- Los números de "Importe" usan coma decimal: 1.234,50 se lee como 1234.50.
- N/A en "Importe" se leyeron como vacíos (1 de 5 valores).
- "Pagado" contiene palabras de sí y no (sí, no); se guarda como booleano.
Tu archivo se convierte en esta computadora y nunca se sube.
Otros ejemplos:
Un archivo CSV, seis bases de datos
El ejemplo de arriba, ventas_2024.csv, y el tipo que recibe cada una de sus columnas en cada base de datos.
| En el archivo | Primer valor | 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) |
Carga el script en tu base de datos
La descarga es un archivo .sql simple. Cada base de datos lo ejecuta con sus propias herramientas.
PostgreSQL
psql -v ON_ERROR_STOP=1 -d mydb -f ventas_2024.postgresql.sqlON_ERROR_STOP hace que psql se detenga en el primer error. El script corre en una sola transacción, así que una carga fallida deja la base de datos como estaba.
MySQL
mysql --default-character-set=utf8mb4 mydb < ventas_2024.mysql.sqlEl script define utf8mb4 por sí mismo; el flag hace que el cliente lo envíe igual, así que los acentos llegan intactos.
MariaDB
mariadb --default-character-set=utf8mb4 mydb < ventas_2024.mariadb.sqlEl script define utf8mb4 por sí mismo; el flag hace que el cliente lo envíe igual, así que los acentos llegan intactos.
SQLite
sqlite3 ventas_2024.db < ventas_2024.sqlite.sqlEl archivo de la base de datos se crea si no existe. El convertidor también descarga una base de datos .sqlite lista, sin ningún comando.
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i ventas_2024.sql_server.sql-f 65001 lee el archivo como UTF-8, así que los acentos y la ñ llegan tal como están escritos.
Oracle
sqlplus user@//localhost/mydb @ventas_2024.oracle.sqlEl script desactiva las variables de sustitución (SET DEFINE OFF), así que un ampersand en tus datos sigue siendo un ampersand.
La línea de comandos carga archivos directo en una base de datos SQLite gratis. Con IntoSQL Pro, ella y la app de escritorio también cargan en PostgreSQL, MySQL y MariaDB. Para SQL Server y Oracle, ejecuta el script.
Qué saber sobre los archivos CSV y cada base de datos
Qué lee IntoSQL en los archivos CSV
- La codificación se detecta, incluidas Windows-1252 y UTF-16, así que los acentos y la ñ llegan intactos.
- El separador se detecta: coma, punto y coma, tabulador o barra vertical. Con punto y coma, las comas decimales como 1.234,50 se leen como números.
- Los valores entre comillas pueden contener separadores y saltos de línea.
Qué saber sobre cada base de datos
- Elige la base de datos una vez abierto el archivo: cada una recibe los tipos que admite.
Cómo se guarda cada tipo de valor en cada base de datos
| Valor | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| Sí y no | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Números enteros | integer | int | int | INTEGER | int | NUMBER(10) |
| Números enteros grandes | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| Decimales | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| Números de punto flotante | double precision | double | double | REAL | float | BINARY_DOUBLE |
| Fechas | date | date | date | DATE | date | DATE |
| Horas del día | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| Fechas con hora | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| Fechas con hora y zona horaria | timestamptz | datetime(6)datetime | datetime(6)datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| Texto | text | varchar(n)textmediumtextlongtext | varchar(n)textmediumtextlongtext | TEXT | nvarchar(n)nvarchar(max) | VARCHAR2(n CHAR)CLOB |
Preguntas sobre CSV a SQL
¿No encuentras la respuesta? Escríbenos desde la página de contacto y te responde una persona. Página de contacto
¿Cómo convierto CSV a SQL?
Suelta tu archivo en el convertidor al inicio de esta página y elige tu base de datos: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server u Oracle. Cada una recibe los tipos que admite. Descarga el script y ejecútalo en tu base de datos.
¿Y si mi CSV usa punto y coma o tabuladores?
El separador se detecta: coma, punto y coma, tabulador o barra vertical. También puedes elegirlo en Más opciones. Con punto y coma, las comas decimales como 1.234,50 se leen como números.
¿Qué tipos usa en cada base de datos?
Cada base de datos recibe los suyos: los valores sí y no son boolean en PostgreSQL, tinyint(1) en MySQL y MariaDB, bit en SQL Server y NUMBER(1) en Oracle. La tabla de esta página muestra cada tipo de valor.
¿Conserva los ceros a la izquierda?
Sí. Un código como 00412 se queda como texto en todas las bases de datos, escrito como '00412', así que no se pierde ningún cero.
¿Puede cargar los datos sin un script?
Sí. La línea de comandos carga en SQLite gratis, y con IntoSQL Pro la app de escritorio y la línea de comandos cargan en PostgreSQL, MySQL y MariaDB. Para SQL Server y Oracle, ejecuta el script.
¿Qué tan grande puede ser el archivo CSV?
El navegador lee el CSV a medida que llega, así que funcionan archivos de varios gigabytes. En una laptop con Apple M4, la línea de comandos convierte un CSV de 174 MB con un millón de filas en menos de un segundo.