Volver al Blog

Las Palabras Reservadas de MySQL Casi Me Arruinan el Fin de Semana

· 2 min de lectura ·

Imagínate esto: exportas un dump de MySQL, intentas importarlo en otro servidor, y explota. ¿Por qué? Porque alguien (yo, hace años) le puso status a una columna. O order. O key. Ya sabes, palabras que MySQL decidió que son sagradas.

La solución es simple — envolver esos nombres de columnas en backticks. La parte molesta es hacerlo manualmente en un archivo de dump de 500MB. No gracias.

Así que construí clean-sql. Le apuntas a un archivo de dump SQL y arregla las cosas automáticamente. Lo que empezó como una herramienta para backtick-quotear ha crecido para manejar seis tipos de errores de importación: palabras reservadas como nombres de columnas, comillas doble-escapadas de herramientas de backup con bugs, backslashes al final de valores, errores de foreign key constraints, bytes nulos, y saltos de línea literales que confunden al cliente mysql.

Usa una máquina de estados a nivel de carácter que rastrea correctamente las cadenas entre comillas simples — incluso a través de plantillas de email HTML multi-línea con comillas escapadas y CSS. Así que solo arregla nombres de columnas reales, nunca corrompe contenido dentro de valores de texto.

¿Pude haber escrito un one-liner con sed? Tal vez. ¿Hubiera funcionado con los edge cases? Absolutamente no. Llevo programando desde 1988, sé que no debo confiar en regex con SQL.

Lo hice en Go. Corre en segundos incluso en archivos enormes — muestra una barra de progreso en dumps grandes y soporta --check para ejecución en seco, --disable-fk para envolver la salida con SET FOREIGN_KEY_CHECKS, y --update para auto-actualizarse desde GitHub.

Repo en GitHub

Loading comments...