DevToolPal
ES

Convertidor de CSV a SQL

Convierte CSV en sentencias CREATE TABLE e INSERT para MySQL, PostgreSQL, SQLite o SQL Server, con tipos de columna inferidos.

Se ejecuta en local, nunca se sube

Opciones

Entrada

0 caracteres · 0 B

Salida

0 caracteres · 0 B

Qué hace

Cargar una hoja de cálculo en una base de datos suele implicar escribir a mano la definición de la tabla y una larga lista de sentencias INSERT, escapando cada apóstrofo. Esta herramienta lo hace por ti: pega un CSV y obtén un script SQL listo para ejecutar, con una sentencia CREATE TABLE e INSERT de varias filas agrupadas en lotes.

Sigue la RFC 4180: maneja campos entre comillas, comas y saltos de línea dentro de las celdas y comillas duplicadas. Las cadenas se escapan correctamente para la base de datos elegida, incluidas las barras invertidas en MySQL y las cadenas Unicode N'…' de SQL Server.

Cómo se usa

  1. Pega un CSV, sube un archivo .csv o .tsv, o pulsa Ejemplo.
  2. Escribe el Nombre de la tabla. Usa un punto para el esquema, como public.orders o dbo.orders.
  3. Elige el Dialecto: MySQL / MariaDB, PostgreSQL, SQLite o SQL Server.
  4. Elige las Filas por INSERT y desactiva CREATE TABLE si la tabla ya existe.
  5. Copia el SQL o descárgalo como archivo .sql y ejecútalo con tu cliente de base de datos.

El delimitador se detecta automáticamente; también puedes fijar coma, punto y coma, tabulador o barra vertical. Si la primera fila contiene datos y no nombres de columna, desactiva La primera fila es el encabezado y las columnas se llamarán column_1, column_2, etc.

Ejemplo

Este CSV:

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

se convierte en este script para PostgreSQL:

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

El apóstrofo de Ada's se duplica, el precio vacío pasa a NULL y los números y booleanos se escriben sin comillas.

Tipos y dialectos

  • MySQL / MariaDB: identificadores entre acentos graves, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) o TEXT; las barras invertidas de las cadenas se escapan.
  • PostgreSQL: identificadores entre comillas dobles, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP y TEXT.
  • SQLite: identificadores entre comillas dobles y las clases de almacenamiento de SQLite INTEGER, REAL y TEXT; los booleanos se escriben como 1 y 0.
  • SQL Server: identificadores entre corchetes, INT, DECIMAL, BIT, DATE, DATETIME2 y NVARCHAR, con literales N'…' y un máximo de 1000 filas por INSERT.
  • Las celdas vacías pasan a NULL. Desactiva Celdas vacías como NULL para conservar cadenas vacías en las columnas de texto.
  • Revisa los tipos inferidos antes de ejecutar el script sobre datos de producción: una columna que solo tiene números pequeños en la muestra puede necesitar un tipo más amplio más adelante.

Preguntas frecuentes

› ¿Qué bases de datos admite?

MySQL (y MariaDB), PostgreSQL, SQLite y Microsoft SQL Server. El dialecto determina cómo se citan los nombres de tablas y columnas, cómo se escapan las cadenas, qué tipos de columna se usan y cómo se escriben los booleanos.

› ¿Cómo se eligen los tipos de columna?

Se analiza cada columna: los enteros pasan a INT o BIGINT, los decimales a DECIMAL con precisión suficiente, true/false a BOOLEAN (BIT en SQL Server), las fechas ISO a DATE o DATETIME y todo lo demás a texto. Los números con ceros a la izquierda, como los códigos postales, se quedan como texto. Desactiva Detectar tipos para que todas las columnas sean texto.

› ¿Por qué SQL Server está limitado a 1000 filas por INSERT?

SQL Server rechaza listas VALUES de más de 1000 filas, así que en ese dialecto los lotes mayores se limitan a 1000. Otras bases de datos aceptan lotes más grandes, pero entre 100 y 1000 filas por sentencia es un buen equilibrio entre velocidad y tamaño.

› ¿Se sube mi CSV?

No. El análisis y la generación del SQL ocurren por completo en tu navegador, así que los datos nunca salen de tu dispositivo.