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 |
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
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.