La tarea que finalmente me hizo construir esto fue aburrida y me costó una hora que no tenía. Un cliente me entregó una hoja de cálculo de 1.800 filas de productos y me pidió que la cargara en su base de datos de preparación antes de una demostración a la mañana siguiente. Sin API, sin pantalla de importación, solo una CSV y una tabla MySQL esperándola. Hice lo que todos hacen la primera vez: abrí el archivo, escribí un par de declaraciones INSERT a mano para obtener la forma correcta y comencé a copiar valores. Tres filas después, el nombre de un producto con un apóstrofe O'Brien's Tools, rompió toda la afirmación, porque la cita única cerró la cadena temprano y MySQL se atragantó con el resto. Ese es el momento en que te das cuenta de que escribir a mano SQL desde una hoja de cálculo no es un trabajo de cinco minutos, es un campo minado de citas con 1.800 posibilidades de equivocarte. Entonces construí el Convertidor CSV a SQL, y esta guía es el razonamiento detrás de cada opción que contiene.
TL;Dr: Un convertidor de CSV a SQL lee un archivo CSV y genera el
CREATE TABLEyINSERTdeclaraciones que una base de datos necesita para almacenarla. La herramienta Toolz analiza el archivo con una máquina de estados RFC 4180, infiere si cada columna es un número entero, decimal, booleano o texto, cita identificadores para MySQL, PostgreSQL o SQLite, escapa de todos los valores correctamente y convierte celdas vacías enNULL. Pegue el CSV, elija su dialecto y copie un script que pueda ejecutar de inmediato. Todo se ejecuta en el lado del cliente: sin carga, sin registro, funciona sin conexión.
Construyo productos SaaS en Laravel y React y envío complementos de WordPress, por lo que cargar datos tabulares en una base de datos es una tarea semanal en lugar de una tarea única. A veces es una exportación de cliente, a veces un archivo inicial para un entorno nuevo, a veces un elemento rápido para una prueba. CSV es siempre el formato al que llega y SQL es siempre donde debe terminar. Pasar de uno a otro a mano es exactamente el tipo de trabajo repetitivo y propenso a errores que una herramienta de navegador debería borrar, así que esta es la guía que desearía tener cuando ese apóstrofe rompiera mi importación.
¿qué es un convertidor CSV a SQL?
Un convertidor de CSV a SQL toma filas de valores separados por comas y produce declaraciones SQL que crean una tabla y cargan los datos en ella. El propio CSV está poco estandarizado RFC 4180 describe la forma común y es explícito en que documenta la práctica existente en lugar de dictarla. Lee la primera fila como los nombres de las columnas, trata cada fila siguiente como un registro y emite dos cosas: a CREATE TABLE declaración que define las columnas con tipos sensibles y un conjunto de INSERT declaraciones que llevan los valores. El resultado es un script SQL simple que puede pegar en un cliente de base de datos como TablePlus o DBeaver, realizar una migración o canalizar hacia el mysql, psql, o sqlite3 línea de comando para construir y completar la tabla en un solo paso.
La razón por la que existe la categoría es que la traducción es complicada en formas que son fáciles de subestimar. Cada valor de texto debe estar envuelto en comillas individuales. Cada cita dentro de un valor debe duplicarse para que no termine la cadena. Los números y booleanos deben dejarse sin comillas o la base de datos los almacenará como texto y su WHERE price > 100 se comportará de manera extraña. Las células vacías normalmente necesitan convertirse NULL en lugar de una cadena vacía. Los nombres de columnas con espacios o palabras reservadas deben citarse con el carácter correcto para su base de datos. Si pierde cualquiera de estos en unos pocos miles de filas, todo el lote fallará, a menudo con un error que apunta a la línea incorrecta. Un convertidor aplica todas estas reglas de la misma manera cada vez, que es la propuesta de valor completa.
¿cómo decide la herramienta cada columna 's tipo?
Esta es la parte que separa un convertidor útil de uno tonto. Una herramienta ingenua hace cada columna TEXT y lo llama hecho, que técnicamente funciona pero te brinda una tabla donde los números se clasifican como cadenas y no puedes hacer aritmética sin realizar casting. La herramientaz Herramienta CSV a SQL en su lugar, escanea cada valor en una columna y elige el tipo más estrecho que se ajuste a todos ellos.
La lógica es sencilla una vez que la ves. Si cada valor no vacío de una columna es un número entero, la columna se convierte en un tipo entero. Si cada valor es numérico pero algunos tienen puntos decimales, se convierte en un tipo flotante. Si cada valor es la palabra true investigaciones operacionales false, se vuelve booleano. Cualquier otra cosa, incluido el contenido mixto y cualquier cosa con letras, vuelve al texto. Hay una excepción deliberada que sorprende a la gente de una buena manera: un valor como 007 investigaciones operacionales 00123 permanece texto, no un número entero, porque un cero inicial casi siempre significa que la columna es un ID, un código postal o un número de teléfono donde el cero es significativo y se perdería si se almacenara como un número. Esa única regla me ha salvado de corromper silenciosamente más de una columna SKU de producto.
Puede desactivar la inferencia si prefiere que cada columna sea texto, que es la opción segura cuando planea modificar los tipos usted mismo después de cargarlos. Pero para el caso común, dejar que la herramienta infiera tipos significa lo generado CREATE TABLE coincide con los datos en lugar de aplanarlos y la tabla se puede utilizar en el momento en que existe.
¿qué dialecto SQL debo elegir?
SQL es un estándar, la forma en que la ortografía inglesa es un estándar, es decir, cada base de datos tiene su propio acento. El dialecto que elija cambia tres cosas en el resultado: cómo se citan los identificadores, cómo se llaman los nombres de los tipos y cómo se escriben verdadero y falso. Así es como difieren las cuatro opciones.
| Preocupación | mic | PostgreSQL | SQLite | Sql estándar |
|---|---|---|---|---|
| Cita de identificador | Palabras traseras `col` |
Citas dobles "col" |
Citas dobles "col" |
Citas dobles "col" |
| Tipo entero | INT |
INTEGER |
INTEGER |
INTEGER |
| Tipo decimal | DOUBLE |
DOUBLE PRECISION |
REAL |
REAL |
| Tipo booleano | TINYINT(1) |
BOOLEAN |
INTEGER |
BOOLEAN |
| Tipo de texto | VARCHAR(255) |
TEXT |
TEXT |
TEXT |
| Valores booleanos | 1 / 0 |
TRUE / FALSE |
1 / 0 |
TRUE / FALSE |
La guía práctica es hacer coincidir el dialecto con la base de datos en la que realmente estás cargando, porque las diferencias no son cosméticas. MySQL rechazará los identificadores de doble cita que PostgreSQL desee a menos que esté en modo ANSI y PostgreSQL no lo tenga TINYINT. SQLite no tiene ningún tipo booleano real, por lo que los booleanos se convierten en números enteros, razón por la cual la herramienta escribe 1 y 0 tanto para MySQL como para SQLite pero TRUE y FALSE para PostgreSQL y SQL estándar. Si no está seguro o está escribiendo algo portátil, SQL estándar es la opción más conservadora. Una vez que se generan las declaraciones, siempre puede ejecutarlas a través de Formateador SQL para imprimir bastante la salida antes de que entre en un archivo de migración.
¿cómo convierto un CSV a SQL con la herramienta?
El flujo es deliberadamente corto. Pegue su CSV en el cuadro de entrada o haga clic en Cargar muestra para ver un ejemplo trabajado con una identificación, un nombre, un rol, un booleano y una columna de salario.
Establezca el nombre de la tabla en el lugar al que se llame la tabla de destino y elija su dialecto SQL. Luego decida las opciones de salida. Dejar "Incluir CREAR TABLA" encendido si la tabla aún no existe, o apáguela para generar solo el INSERT declaraciones cuando estás cargando en una tabla que ya está allí. Mantener "Inferir tipos de columnas" activado para una tabla escrita o desactivado para que todo sea texto. Elija " INSERTAR y quot de varias filas; para una declaración compacta con muchas tuplas de valor, que se carga más rápido, o apáguela para obtener una INSERT por fila, que es más amigable para el control de versiones y te permite ejecutar filas individualmente. Dejar " Celdas vacías como NULL" activado a menos que desee específicamente almacenar cadenas vacías.
El delimitador se puede detectar automáticamente o configurar a mano. Detecte automáticamente puntuaciones coma, punto y coma, pestaña y canalización según la coherencia con la que cada una divide las primeras líneas en el mismo número de columnas, que maneja correctamente los archivos de punto y coma europeos y las exportaciones separadas por pestañas. Haga clic en Convertir a SQL y la salida aparecerá con un recuento de filas y columnas, además de cualquier advertencia sobre nombres de columnas duplicados o filas irregulares. Cópielo y ejecútelo. Si la exportación llegó sin una línea de encabezado, apague " La primera fila es encabezado" y la herramienta nombra las columnas column_1, column_2, y así sucesivamente, luego trata cada fila como datos.
¿por qué es tan importante el escape de valor correcto?
Debido a que escapar incorrectamente no es solo un error, es una clase de vulnerabilidad de seguridad. El apóstrofe que rompió mi primera importación a mano es el mismo mecanismo detrás de la inyección SQL: una sola cita dentro de un valor, si no se escapa, finaliza la cadena antes y permite que lo que sigue se interprete como SQL. En una aplicación, resuelve esto con consultas parametrizadas, donde el controlador de la base de datos mantiene los valores y el código estrictamente separados. Cuando genera un script SQL estático desde un CSV, no tiene esa separación, por lo que el escape debe ser correcto en el texto generado.
La herramienta sigue la regla ANSI SQL: un valor de texto se envuelve en comillas individuales y cualquier comilla dentro del valor se duplica. Entonces O'Brien's Tools se convierte en 'O''Brien''s Tools', que cada una de las bases de datos admitidas lee como cadena original. Los números y booleanos se emiten sin comillas, por lo que se almacenan como el tipo correcto y los identificadores se citan con el propio carácter del dialecto & # 39, por lo que se llama una columna order investigaciones operacionales select no choca con una palabra reservada. Este es exactamente el tipo de corrección tediosa con la que los humanos se equivocan bajo la presión del tiempo y una herramienta se equivoca cada vez, que es el objetivo de automatizarla. Si tiene curiosidad sobre cómo se compara el escape en todos los formatos, el Convertidor CSV a JSON se enfrenta al mismo problema desde el lado JSON, donde el personaje de escape es una barra invertida en lugar de una cita doble.
¿es seguro convertir datos CSV confidenciales en línea?
Para esta herramienta, sí, y el motivo es arquitectónico más que una promesa en una página. Cada paso, analizando el CSV, infiriendo tipos de columnas, escapando valores y creando declaraciones, se ejecuta como JavaScript dentro de la pestaña de su propio navegador. No hay carga, ni servidor de ida y vuelta, y no se registra ni almacena nada. Puede demostrarlo abriendo la pestaña de red de su navegador ' y haciendo clic en Convertir: ninguna solicitud sale de la página. Una vez que la página se haya cargado, puede desconectarse de Internet por completo y sigue generando SQL.
Eso es importante porque los CSV que la gente convierte a SQL suelen ser los archivos más confidenciales que tiene una empresa. Las tablas de clientes, los historiales de pedidos, los registros de usuarios y los datos de precios viajan como CSV antes de aterrizar en una base de datos. Un convertidor que carga su archivo en un servidor, por muy bien intencionado que sea, convierte una hoja de cálculo privada en otra persona 's entrada de registro. El procesamiento del lado del cliente elimina la pregunta por completo: los datos nunca salen de la máquina en la que se inició. Ese valor predeterminado es deliberado en todas las herramientas de Toolz.dev, y escribí el argumento más largo en guía de privacidad de datos para herramientas en línea para cualquiera que quiera el razonamiento completo.
¿dónde encaja CSV a SQL en un flujo de trabajo real?
La conversión rara vez es todo el trabajo, es una estación en proceso. El patrón que presiono con más frecuencia es la siembra: un cliente envía una hoja de cálculo, la convierto a un script SQL y ejecuto ese script para completar una base de datos de preparación o desarrollo para que la aplicación tenga datos realistas con los que trabajar. Debido a que la salida es un script simple en lugar de una conexión en vivo, es fácil verificar en un repositorio como un archivo inicial, revisar en una solicitud de extracción y volver a ejecutar en cualquier entorno.
Las herramientas que lo rodean dependen de lo que hagan a continuación los datos. Si necesito examinar el archivo como una cuadrícula ordenable antes de convertirlo, el Visor CSV representa el mismo análisis RFC 4180 que una tabla para que pueda detectar una fila con formato incorrecto antes de que se convierta en una fila con formato incorrecto INSERT. Si el destino es una API o un archivo de configuración en lugar de una base de datos, el Convertidor CSV a JSON en cambio, es el salto correcto y su hermano JSON a CSV maneja lo contrario cuando necesito devolver datos como una hoja de cálculo. Y una vez que existe el SQL, el Formateador SQL lo ordena en algo legible para una migración. Ninguno de estos carga tus datos, por lo que puedes encadenarlos en el mismo archivo privado sin pensarlo dos veces. Si estás montando un kit para este tipo de trabajo de datos, mi Guía del kit de herramientas para desarrolladores web recorre cómo se conectan las piezas.
¿Cuáles son los límites que vale la pena conocer?
La honestidad sobre los límites es parte de confiar en una herramienta. El convertidor genera estándar CREATE TABLE y INSERT declaraciones, lo que significa que no infiere claves primarias, claves externas, índices o restricciones de columna, porque ninguna de esa información existe en un CSV plano. Elige un tipo razonable para cada columna, pero VARCHAR(255) para MySQL el texto es un valor predeterminado, no una medición; Si tiene una columna de descripciones largas, es posible que desee ampliarla TEXT después de cargar, y si tienes una columna, debería serlo DATE investigaciones operacionales DATETIME querrás modificarlo, ya que la herramienta trata las fechas como texto para evitar adivinar un formato incorrecto.
La multirfila INSERT es compacto y rápido, pero los archivos muy grandes producen una única declaración muy larga y algunas bases de datos limitan el tamaño de una declaración o el número de marcadores de posición. Si está cargando decenas de miles de filas y alcanza un límite, cambie a una INSERT por fila, que intercambia un script más grande por declaraciones que una base de datos siempre aceptará. Finalmente, la herramienta sirve para generar scripts de carga, no para transmitir un archivo de varios gigabytes, porque toda la entrada vive en la memoria del navegador. Para las exportaciones diarias, los archivos semilla y los accesorios, que es lo que la mayoría de la gente realmente tiene, ninguno de estos límites muerde. Saber que existen es sólo la diferencia entre usar bien una herramienta y sorprenderse por ella.
Preguntas frecuentes
¿cómo convierto un archivo CSV a SQL?
Pegue el CSV en el Convertidor CSV a SQL, establezca el nombre de la tabla y elija su dialecto SQL. Lee la fila del encabezado como nombres de columnas, infiere cada tipo de columna y genera un CREATE TABLE más INSERT declaraciones que puedes copiar y ejecutar en tu base de datos. Todo sucede en tu navegador, por lo que el archivo nunca se carga.
¿qué bases de datos SQL admite?
El convertidor genera declaraciones para MySQL, PostgreSQL, SQLite y SQL estándar. El dialecto que elija controla las citas del identificador y el tipo y la sintaxis booleana, por lo que el script se ejecuta en esa base de datos sin ediciones. MySQL utiliza backticks y TINYINT(1) booleanos, mientras que PostgreSQL y SQL estándar utilizan comillas dobles y TRUE investigaciones operacionales FALSE.
¿Cómo decide los tipos de columnas?
Cada columna se compara con todos los valores de los datos. Si todos los valores no vacíos son números enteros, la columna se convierte en un tipo entero, todos los números se convierten en un tipo decimal, todos los valores verdaderos o falsos se convierten en un tipo booleano y cualquier otra cosa se convierte en texto. Un valor con un cero inicial como 007 permanece en el texto porque suele ser un identificador importante. Puede desactivar la inferencia para crear cada texto de columna.
¿Crea la tabla o solo los insertos?
Ambos por defecto. Emite un CREATE TABLE declaración con los tipos de columnas inferidos seguida de INSERT declaraciones. Puedes girar el CREATE TABLE apagado cuando la tabla ya existe y solo necesitas cargar filas.
¿cómo se manejan las citas y los caracteres especiales?
Los valores del texto están envueltos en comillas individuales y cualquier comilla dentro de un valor se duplica, que es el escape SQL estándar O'Brien se convierte en 'O''Brien'. Los números y los booleanos no se citan, y los identificadores se citan con comillas invertidas para MySQL o comillas dobles para los otros dialectos, por lo que una palabra reservada como order no rompe la afirmación.
¿Qué sucede con las celdas vacías?
De forma predeterminada, una celda vacía se convierte en NULL, que suele ser lo que desea para un valor faltante. Si prefiere almacenar una cadena vacía, desactive la opción vacío como NULL y las celdas vacías se convertirán en dos comillas simples.
¿puedo convertir un CSV que no tenga fila de encabezado?
Sí. Desactive la opción de encabezado y la herramienta nombrará las columnas column_1, column_2, y así sucesivamente, luego trata cada fila como datos. Esto es útil para exportaciones sin formato que se envían sin una línea de encabezado.
¿mis archivos CSV se cargan en alguna parte? No. El análisis y la generación SQL se ejecutan como JavaScript en su navegador. No se transmite, registra ni almacena nada, y la herramienta sigue funcionando sin conexión una vez cargada, lo que puede confirmar mirando la pestaña de red mientras realiza la conversión.



