Convertitore CSV in SQL

Inserire dati CSV in un database di solito significa avviare uno strumento di caricamento o scrivere comandi COPY / LOAD DATA INFILE che funzionano solo su file locali. Per piccoli set di dati, decine, centinaia, qualche migliaio di righe, le semplici istruzioni INSERT che puoi incollare in qualsiasi console SQL sono spesso più veloci. Questo strumento prende il tuo CSV, prende un nome di tabella e produce un INSERT per riga con identificatori racchiusi tra backtick e valori racchiusi tra virgolette singole che sono sicuri da eseguire.

Come viene assemblato il SQL

  1. 1

    Incolla il CSV

    CSV standard con riga di intestazione opzionale. Il parser gestisce celle tra virgolette con separatori incorporati.

  2. 2

    Imposta il nome della tabella

    I caratteri non alfanumerici nel nome della tabella vengono sostituiti con underscore; torna a `my_table` se vuoto.

  3. 3

    Le colonne provengono dall'intestazione

    Se la modalità intestazione è attivata, la riga 1 diventa l'elenco delle colonne. Altrimenti le colonne sono denominate `column_1`, `column_2`, ecc.

  4. 4

    Un INSERT per riga di dati

    Ogni riga diventa `INSERT INTO table (cols) VALUES (...)`. I valori sono racchiusi tra virgolette singole e le virgolette interne sono raddoppiate.

Dialetto, citazione e quando optare per qualcos'altro

Il generatore mira a SQL in stile MySQL con backtick attorno agli identificatori e virgolette singole attorno ai valori. La maggior parte dei database lo accetterà con piccole modifiche.

Scheda di riferimento del dialetto

Database Citazione identificatore Note
MySQL backticks Funziona senza modifiche.
MariaDB backticks Funziona senza modifiche.
PostgreSQL virgolette doppie Sostituisci ` con " prima di eseguire.
SQLite virgolette doppie Sostituisci ` con " o elimina la citazione degli identificatori.
SQL Server parentesi quadre Sostituisci ` con []; fai attenzione a N'...' per Unicode.

Come vengono gestiti i valori

Tutti i valori sono racchiusi tra virgolette singole e eventuali virgolette singole incorporate sono raddoppiate (O'Brien diventa 'O''Brien'). Questo è il modo SQL-92 e funziona in ogni database mainstream. Il convertitore non effettua il casting dei tipi, tutto viene emesso come un letterale di stringa, quindi la conversione implicita del database trasformerà '42' in un intero quando la colonna è INT.

Suggerimenti per importazioni pulite

  • Crea prima la tabella. Il convertitore emette solo istruzioni INSERT, non CREATE TABLE. Abbinalo a uno schema che definisci a mano o genera dal tuo ORM.
  • Dividi file grandi. Incolla 500-1000 righe alla volta se il tuo client SQL ha un limite di dimensione delle istruzioni.
  • Avvolgi in una transazione. Per qualsiasi cosa oltre qualche centinaio di righe, racchiudi l’incolla con BEGIN; e COMMIT; (o START TRANSACTION; / COMMIT;). Molto più veloce che autocommettere ogni istruzione.

Quando saltare la generazione SQL

Se il tuo file ha più di ~50.000 righe, i caricamenti bulk nativi (COPY in Postgres, LOAD DATA INFILE in MySQL, bcp in SQL Server) sono di un ordine di grandezza più veloci rispetto agli INSERT scriptati. Questo strumento è per importazioni rapide, semina di dati di test e migrazioni una tantum.

Domande frequenti

No. Emette solo istruzioni INSERT. Definisci tu stesso lo schema con CREATE TABLE in anticipo, in questo modo mantieni il controllo sui tipi di colonna, lunghezze e vincoli invece di lasciare che il convertitore indovini.

Con una modifica: sostituisci le virgolette di identificatore backtick attorno ai nomi di tabella e colonna con virgolette doppie. I valori sono racchiusi tra virgolette singole e verranno eseguiti senza modifiche su qualsiasi dialetto SQL-92.

Le virgolette singole all’interno dei valori sono raddoppiate (O''Brien), che è l’escape standard SQL. Le barre rovesciate, i segni di percentuale e gli underscore passano letteralmente, diventano speciali solo nei modelli LIKE.

Sì. Il CSV viene inviato al nostro server per generare il SQL. Non viene archiviato e non viene aggiunto al link della pagina.

Strumenti correlati