Conversione da CSV a SQL (generazione di istruzioni INSERT)

Converte un file CSV in istruzioni SQL di inserimento e creazione della tabella. Sono previsti i tre dialetti di MySQL, PostgreSQL e SQLite e il tipo delle colonne — intero, decimale o testo — è riconosciuto automaticamente. La conversione avviene interamente nel navigatore e i dati non sono trasmessi ad alcun servente.

Carattere separatore
Considera la prima riga come intestazione
Nome della tabella
Dialetto SQL
Genera anche l'istruzione di creazione della tabella
Tratta i valori vuoti come NULL
Riunisci più righe in un'unica istruzione di inserimento


            
            Copiato!
            
          

Inserite un file CSV per vedere qui le istruzioni SQL.

Corrispondenza fra le righe del CSV e le istruzioni di inserimento

Una riga del CSV name,age,city
Istruzione di inserimento risultante INSERT INTO `my_table` (`name`, `age`, `city`) VALUES ('Alice', 30, 'Tokyo');

Usando la prima riga come intestazione, ciascuna riga successiva diventa un'istruzione di inserimento con i nomi delle colonne dell'intestazione. Le colonne riconosciute come intere o decimali sono scritte come numeri senza virgolette, le altre come testo racchiuso fra apici semplici.

Consigli

  • Il tipo di una colonna — intero, decimale o testo — è dedotto esaminando i valori di tutte le righe di dati di quella colonna. Basta un solo valore non numerico perché l'intera colonna sia trattata come testo.
  • Attivando l'opzione che riunisce più righe in un'unica istruzione si ottiene una sola istruzione nella forma `INSERT INTO ... VALUES (...), (...), (...);`, riducendo il numero di esecuzioni necessarie per immettere molti dati.
  • MySQL racchiude nomi di tabelle e colonne fra apici inversi, PostgreSQL e SQLite fra virgolette doppie: scegliendo il dialetto, il carattere di delimitazione cambia da sé.
  • Disattivando il trattamento dei valori vuoti come NULL, una stringa vuota è scritta come letterale vuoto fra apici nelle colonne di testo e come NULL in quelle numeriche.

Domande frequenti

Si esaminano i valori di tutte le righe di dati della colonna: se sono tutti in notazione intera si assegna il tipo intero, se sono tutti in notazione decimale il tipo reale, altrimenti — testo o valori misti — il tipo testuale. Generando l'istruzione di creazione della tabella, questo esito è riportato direttamente come tipo della colonna.

Sì. Scegliendo PostgreSQL o SQLite come dialetto, il carattere che delimita nomi di tabelle e colonne, cioè le virgolette doppie, e i nomi dei tipi sono prodotti secondo le convenzioni della base di dati corrispondente.

Secondo la convenzione di protezione dello standard SQL, l'apice viene raddoppiato automaticamente: l'istruzione si può quindi eseguire così com'è.

No. La conversione avviene interamente nel JavaScript del navigatore e quanto inserite non viene mai trasmesso ad alcun servente: potete usare lo strumento con serenità anche su dati reali.
Tool-kun

A proposito — perché si dice che le istruzioni di inserimento siano lente

L'istruzione unica che riunisce più righe, generabile con questo strumento nella forma `INSERT INTO t VALUES (1,'a'), (2,'b'), ...;`, può risultare assai più rapida dell'emissione di un'istruzione separata per ogni riga. Riunendole si riducono infatti sia il costo dell'analisi sintattica e della trasformazione in piano di esecuzione, sia quello del consolidamento della transazione, che altrimenti si ripeterebbe per ciascuna istruzione.

MySQL ha però un limite sulla dimensione dei pacchetti ammessi e PostgreSQL un limite analogo sui propri respingenti di comunicazione: stipando troppe righe in un'unica istruzione si può superare quella soglia e ottenere un errore. Nella pratica è consueto suddividere le istruzioni ogni qualche centinaio o qualche migliaio di righe.

Immettere il contenuto di un file CSV in una base di dati di prova è un'operazione che nello sviluppo si chiama preparazione dei dati iniziali ed è tanto frequente che molte intelaiature per il web offrono meccanismi appositi. Uno strumento di conversione come questo torna comodo per le verifiche di piccola scala e per le migrazioni di dati, dove ricorrere a quei meccanismi sarebbe eccessivo.