La conversió SQL (SQL Conversion) consisteix a extreure dades d'scripts SQL i reorganitzar-les en altres formats de dades com JSON, CSV, XML, YAML, HTML, Markdown. SQL (Structured Query Language, llenguatge de consulta estructurat) és el llenguatge de consulta estàndard per a bases de dades relacionals, les eines d'exportació de bases de dades (com mysqldump, pg_dump) normalment exporten les dades com a sentències INSERT en scripts SQL, aquest format encara que facilita la importació a bases de dades, no és adequat per a la lectura per programes, anàlisi de dades o intercanvi entre sistemes, per la qual cosa cal convertir-lo a formats més universals.
Els scripts d'exportació de dades SQL contenen dos tipus de sentències: CREATE TABLE per definir l'estructura de la taula (noms de columnes, tipus de dades, restriccions), INSERT INTO ... VALUES (...) per inserir dades concretes. Aquesta eina analitza els dos tipus de sentències, extreu definicions de columnes i informació de tipus de CREATE TABLE, i extreu files de dades reals d'INSERT, i després les reorganitza segons el format seleccionat per l'usuari. Tot el procés d'anàlisi es completa localment al navegador, sense dependre de cap servei backend.
Per què cal convertir SQL a altres formats? Tot i que SQL és universal, no és còmode en els següents escenaris: primer, els programes frontend llegeixen JSON molt més fàcilment que no pas analitzar SQL, sense necessitat d'afegir un analitzador SQL; segon, programari de fulls de càlcul com Excel, Google Sheets suporten nativament CSV i no pas SQL; tercer, en escenaris de fitxers de configuració i documentació YAML, Markdown són més llegibles que SQL; quart, l'intercanvi de dades entre sistemes sovint utilitza XML o JSON com a format neutral. Convertint SQL a aquests formats universals, les dades poden ser consumides directament per més eines i llenguatges.
L'analitzador SQL d'aquesta eina està implementat a mà, centrat en l'anàlisi de sentències INSERT i CREATE TABLE. Per a sentències INSERT, admet sintaxi de tuple univalor (INSERT INTO t (a,b) VALUES (1,2)) i tuple multivalor (INSERT INTO t (a,b) VALUES (1,2), (3,4), (5,6)), mapant automàticament les dades segons els noms de columnes. Per a sentències CREATE TABLE, admet l'anàlisi de definicions de columnes, tipus de dades (VARCHAR(255), INT, DECIMAL(10,2) etc. amb longitud entre parèntesis), restriccions i clàusules NOT NULL, PRIMARY KEY, IF NOT EXISTS, gestionant correctament els parèntesis niats per evitar divisions incorrectes.
El reconeixement de tipus és clau en la conversió SQL. L'eina jutja automàticament el tipus segons la forma literal del valor: allò envoltat per cometes simples o dobles és una cadena; NULL (no distingeix majúscules/minúscules) és un valor nul; TRUE/FALSE són booleans; 0x..., X'...', B'...' són literals hexadecimals; nombres purs (amb signe negatiu, punt decimal, notació científica) són nombres. Aquest reconeixement automàtic de tipus assegura que els formats convertits com JSON, CSV puguin conservar la semàntica de les dades originals (com el nombre 1 no és la cadena "1"), facilitant el processament correcte pels programes avall.
Les diferències en els estils de cometes entre dialectes de bases de dades són un problema habitual en l'anàlisi SQL. MySQL per defecte utilitza backticks (`) per envoltar identificadors (noms de taules, columnes), PostgreSQL utilitza cometes dobles ("), SQL Server/T-SQL utilitza claudàtors ([]), SQL estàndard també utilitza cometes dobles. La funció unquoteIdentifier d'aquesta eina reconeix i elimina automàticament aquestes cometes, gestionant alhora l'escapament dins de les cometes (com `` → `, "" → "). En el mode de regeneració SQL, es poden regenerar sentències INSERT amb l'estil de cometes corresponent segons el dialecte objectiu.
L'escapament de cadenes SQL és un altre punt tècnic clau. L'estàndard SQL estableix que les cometes simples dins de cadenes s'escapen duplicant-les ('It''s' representa It's), MySQL per defecte també admet escapament amb barra invertida (\n, \t, \', \", \\, \0, \Z etc.). L'analitzador de cadenes d'aquesta eina gestiona els dos mecanismes d'escapament, restaurant correctament el contingut original de la cadena. En la conversió a CSV, segons l'estàndard RFC 4180 es tornen a escapar els camps que contenen comes, cometes, salts de línia; en la conversió a XML/HTML s'escapen caràcters especials com &, <, >, ", '.
El processament frontend pur és el principi de disseny central d'aquesta eina. Tota l'anàlisi SQL i la conversió de dades s'executen en el motor JavaScript del navegador, sense enviar cap dada al servidor. Això significa que fins i tot si l'script SQL conté informació privada d'usuaris, informació comercial sensible o estructura interna de base de dades, no es filtrarà a l'exterior. Aquest disseny és especialment adequat per processar exportacions de bases de dades de producció, sense preocupacions de compliment normatiu de dades. Alhora, el processament frontend no té latència de xarxa, la velocitat de conversió només està limitada per la CPU i la memòria del dispositiu.
Aquesta eina en comparació amb les tradicionals eines de conversió SQL de línia d'ordres (com sql2csv, sqlparser) té diversos avantatges: no cal instal·lar ni configurar entorns, obrint la pàgina web ja es pot utilitzar; proporciona una interfície visualitzada amb previsualització en temps real del resultat de conversió; suport per canviar entre múltiples formats de sortida amb un sol clic; dades d'exemple integrades i documentació d'ajuda; disseny responsive per a mòbils disponible a qualsevol lloc. Però en contrapartida, aquesta eina se centra en l'extracció de dades, no processa diferències complexes de dialectes SQL (com operadors JSONB de PostgreSQL, ON DUPLICATE KEY UPDATE de MySQL) ni característiques avançades (procediments emmagatzemats, funcions, triggers), en cas de necessitar-ho recomanem utilitzar eines natives de base de dades o plataformes ETL especialitzades.
En utilitzar l'eina de conversió SQL, hi ha diverses bones pràctiques a tenir en compte: primer, abans de convertir comprova si l'script SQL conté dades completes (sentències INSERT) i no només consultes (SELECT), SELECT no s'analitzarà; segon, per a scripts SQL de múltiples taules recomanem activar «Exportar per separat múltiples taules» per conservar la informació d'estructura de taula; tercer, en processar SQL amb caràcters xinesos, la sortida CSV recomanada activa «Incloure BOM» per assegurar que Excel reconegui la codificació; quart, en processar SQL dump grans recomanem desactivar «Sortida bonica» per reduir la mida de sortida; cinquè, en migracions entre bases de dades pots utilitzar el mode «Regeneració SQL» per canviar de dialecte, però els tipus complexos (com matrius PostgreSQL, JSONB) poden requerir ajust manual.