mygems

Convertir un CSV a sentencias SQL INSERT

Entra un CSV, sale un script .sql que cualquier base de datos ejecuta.

  • PostgreSQL, MySQL, SQLite
  • Tipos de columna detectados
  • Comillas escapadas correctamente
  • No se sube nada

1.Abre el archivo

CSV o TSV. Arrástralo aquí o elige un archivo.

Por qué existe

Los asistentes de importación de las bases de datos son quisquillosos con los CSV, y los cargadores de línea de comandos necesitan un acceso a archivos que el servidor de la base de datos a menudo no tiene. Un script .sql simple funciona en cualquier lugar donde funcione una consulta. Pero generarlo a mano es donde falla el entrecomillado: un solo apóstrofo en un apellido rompe todo el script, y una barra invertida sin escapar corrompe una fila en MySQL. Esta herramienta escribe el script con el escapado que cada base de datos necesita de verdad.

Qué hace

  • Escribe una sentencia CREATE TABLE con un tipo para cada columna, decidido según todos sus valores.
  • Escribe las filas como sentencias INSERT de varias filas, en lotes del tamaño que elijas.
  • Entrecomilla los nombres y escapa los valores para la base de datos que elijas, incluidas las barras invertidas de MySQL.
  • Escribe las celdas vacías como NULL y mantiene como texto las columnas con ceros iniciales o con números muy largos.
  • Puede envolverlo todo en una transacción, para que un fallo a mitad de camino deje la base de datos como estaba.

Por qué en lotes

Un INSERT por fila es lento de ejecutar, y un solo INSERT para un millón de filas es demasiado grande para que la mayoría de los servidores lo acepten. Unos cientos de filas por sentencia es rápido y queda por debajo de los límites habituales de paquete y de tamaño de sentencia; redúcelo si tu servidor se queja.

Preguntas

¿Qué bases de datos admite?
PostgreSQL, MySQL y MariaDB, y SQLite. Los scripts son SQL simple, así que otras bases de datos que siguen el estándar, como SQL Server en el caso de las sentencias INSERT, suelen aceptarlos con pequeños cambios en el CREATE TABLE.
¿Cómo se eligen los tipos de columna?
Según todos los valores de la columna. Una columna de números enteros pasa a BIGINT, los decimales a un tipo de coma flotante, verdadero/falso a BOOLEAN, las fechas ISO a DATE, y todo lo demás, incluidos los números con ceros iniciales, a TEXT. Puedes editar el CREATE TABLE en el script antes de ejecutarlo.
¿Es seguro ejecutarlo en una base de datos de producción?
El script solo crea una tabla e inserta en ella. Léelo primero, como harías con cualquier script: la vista previa muestra el inicio, y el nombre de la tabla lo eliges tú.