La conversione SQL (SQL Conversion) consiste nell'estrarre dati da uno script SQL e riorganizzarli in altri formati di dati come JSON, CSV, XML, YAML, HTML o Markdown. SQL (Structured Query Language, linguaggio di query strutturato) è il linguaggio di query standard dei database relazionali. Gli strumenti di export dei database (mysqldump, pg_dump) producono generalmente i dati sotto forma di istruzioni INSERT all'interno di uno script SQL. Questo formato, sebbene pratico per l'importazione nei database, risulta scomodo per la lettura tramite programma, l'analisi dei dati o lo scambio tra sistemi, da cui la necessità di convertirlo in formati più universali.
I comuni script di esportazione dati SQL contengono due tipi di istruzioni: CREATE TABLE definisce la struttura della tabella (nomi di colonna, tipi di dati, vincoli), e INSERT INTO ... VALUES (...) inserisce i dati veri e propri. Questo strumento analizza entrambi i tipi di istruzioni: estrae le definizioni di colonna e le informazioni di tipo da CREATE TABLE, e le righe di dati reali da INSERT, per poi riorganizzare l'output nel formato scelto dall'utente. L'intero processo di analisi avviene localmente nel browser, senza dipendere da alcun servizio backend.
Perché è necessario convertire SQL in altri formati? SQL, pur essendo universale, risulta poco pratico nei seguenti scenari: in primo luogo, un programma frontend legge JSON molto più facilmente rispetto a SQL, senza dover integrare un analizzatore SQL; in secondo luogo, i fogli di calcolo come Excel o Google Sheets supportano nativamente CSV, non SQL; in terzo luogo, YAML e Markdown sono più leggibili di SQL negli scenari di configurazione e documentazione; in quarto luogo, lo scambio di dati tra sistemi usa spesso XML o JSON come formato neutro. Una volta convertito in questi formati universali, i dati possono essere consumati direttamente da più strumenti e linguaggi.
L'analizzatore SQL di questo strumento è scritto a mano e si concentra sulle istruzioni INSERT e CREATE TABLE. Per INSERT supporta sia tuple a valore singolo (INSERT INTO t (a,b) VALUES (1,2)) sia tuple multivalore (INSERT INTO t (a,b) VALUES (1,2), (3,4), (5,6)), mappando automaticamente i dati ai nomi di colonna. Per CREATE TABLE analizza definizioni di colonna, tipi di dati (VARCHAR(255), INT, DECIMAL(10,2) ecc., con lunghezza tra parentesi), e vincoli e clausole come NOT NULL, PRIMARY KEY, IF NOT EXISTS, gestendo correttamente le parentesi annidate per evitare split errati.
Il riconoscimento dei tipi è essenziale per la conversione SQL. Lo strumento determina automaticamente il tipo a partire dalla forma letterale del valore: le stringhe con apici singoli o doppi sono stringhe; NULL (senza distinzione tra maiuscole/minuscole) è il valore nullo; TRUE/FALSE sono booleani; 0x..., X'...', B'...' sono letterali esadecimali; e i numeri puri (con segno, separatore decimale, notazione scientifica) sono numeri. Questo riconoscimento automatico dei tipi garantisce che JSON, CSV e altri formati preservino la semantica dei dati originali (ad esempio il numero 1 e non la stringa "1"), affinché i programmi a valle elaborino correttamente i valori.
Le differenze negli stili di virgolette degli identificatori tra dialetti sono una trappola comune dell'analisi SQL. MySQL usa per impostazione predefinita il backtick (`) per racchiudere gli identificatori (nomi di tabelle e colonne), PostgreSQL i doppi apici ("), SQL Server/T-SQL le parentesi quadre ([]), e lo SQL standard anch'esso i doppi apici. La funzione unquoteIdentifier di questo strumento riconosce e rimuove automaticamente queste virgolette, trattando anche gli escape interni (ad esempio `` → `, "" → "). In modalità ricostruzione SQL, INSERT può essere rigenerato con lo stile di virgolette del dialetto di destinazione scelto.
L'escape delle stringhe SQL è un altro punto tecnico essenziale. Lo standard SQL stabilisce che gli apici singoli all'interno di una stringa vengano sottoposti a escape tramite raddoppiamento ('It''s' rappresenta It's). MySQL supporta inoltre l'escape con barra rovesciata (\n, \t, \', \", \\, \0, \Z). L'analizzatore di stringhe di questo strumento gestisce entrambi i meccanismi di escape e ripristina correttamente il contenuto originale. Nella conversione in CSV, i campi con virgola, virgoletta o interruzione di riga vengono sottoposti nuovamente a escape in conformità a RFC 4180; nella conversione in XML/HTML, i caratteri speciali &, <, >, ", ' vengono sottoposti a escape.
L'elaborazione puramente frontend è un principio di progettazione fondamentale di questo strumento. Tutte le fasi di analisi SQL e di conversione dei dati vengono eseguite nel motore JavaScript del browser, senza inviare alcun dato a un server. Questo significa che anche se lo script SQL contiene informazioni personali, dati commerciali sensibili o la struttura interna di un database, nulla trapela all'esterno. Questo approccio è particolarmente adatto agli export dei database di produzione, senza preoccupazioni di conformità dei dati. Al contempo, l'elaborazione frontend elimina la latenza di rete; la velocità di conversione è limitata solo dalla CPU e dalla memoria del dispositivo.
Rispetto agli strumenti tradizionali di conversione SQL a riga di comando (sql2csv, sqlparser), questo strumento offre diversi vantaggi: nessuna installazione o configurazione dell'ambiente, utilizzo diretto dalla pagina web; interfaccia visiva con anteprima in tempo reale del risultato; passaggio con un clic tra più formati di output; dati di esempio e documentazione integrati; design responsive mobile utilizzabile ovunque. In compenso, lo strumento è focalizzato sull'estrazione dei dati e non tratta differenze complesse tra dialetti (operatori JSONB di PostgreSQL, ON DUPLICATE KEY UPDATE di MySQL) né funzionalità avanzate (procedure salvate, funzioni, trigger). Per questo tipo di esigenze, usa strumenti nativi del database o piattaforme ETL specializzate.
Nell'uso dello strumento di conversione SQL è opportuno tenere a mente alcune buone pratiche: in primo luogo, prima di convertire, verificare che lo script SQL contenga dati completi (istruzioni INSERT) e non solo query (SELECT), poiché SELECT non viene analizzato; in secondo luogo, per script SQL con più tabelle, attivare «Output separato per tabelle» per conservare le informazioni di struttura; in terzo luogo, per SQL con caratteri cinesi, attivare «Includi BOM» nell'output CSV affinché Excel riconosca la codifica; in quarto luogo, per dump SQL di grandi dimensioni, disattivare «output formattato» per ridurre il volume di output; in quinto luogo, per migrare tra database, usare la modalità «Ricostruzione SQL» per cambiare dialetto, tenendo presente che i tipi complessi (array di PostgreSQL, JSONB) possono richiedere aggiustamenti manuali.