Skip to main content
CheckTown
Dati

CSV to SQL: Converti dati di fogli di calcolo in istruzioni INSERT

Pubblicato 6 min di lettura
In questo articolo

Cos'è la conversione CSV in SQL?

La conversione CSV in SQL trasforma dati tabulari da un file CSV (valori separati da virgola) in istruzioni SQL che possono creare una tabella del database e inserire i dati. Questo processo comporta l'analisi dei nomi delle colonne, il rilevamento dei tipi di dati, la generazione di un'istruzione CREATE TABLE e la costruzione di istruzioni INSERT per ogni riga.

Questa conversione colma il divario tra i dati dei fogli di calcolo e i database relazionali. Invece di scrivere manualmente SQL per ogni riga di dati, un convertitore automatizza il processo tedioso di rilevamento dei tipi, escape dei valori e formattazione delle istruzioni — trasformando un semplice file di esportazione in comandi di database pronti per la produzione.

Come funziona CSV in SQL

Il processo di conversione coinvolge diversi passaggi, ciascuno dei quali gestisce un aspetto diverso della trasformazione di dati testuali piatti in comandi di database strutturati.

  • Rilevamento del tipo di colonna — il convertitore analizza i valori di ciascuna colonna per determinare il miglior tipo SQL: INTEGER per numeri interi, FLOAT/DECIMAL per numeri con decimali, BOOLEAN per valori vero/falso, DATE per stringhe di date, e VARCHAR o TEXT per tutto il resto
  • Generazione CREATE TABLE — utilizzando i tipi rilevati e la riga di intestazione CSV come nomi di colonna, il convertitore costruisce un'istruzione CREATE TABLE con tipi di dati e vincoli appropriati
  • Costruzione delle istruzioni INSERT — ogni riga CSV diventa un'istruzione INSERT con valori correttamente sottoposti a escape e virgolettati. I valori stringa sono racchiusi tra apici singoli, NULL sostituisce le celle vuote e i caratteri speciali sono sottoposti a escape

Il rilevamento dei tipi funziona testando ogni valore rispetto a pattern: se ogni valore non vuoto in una colonna viene interpretato come intero, il tipo di colonna è INT. Se vengono interpretati come numeri con decimali, è FLOAT. Se i valori corrispondono a pattern di date, è DATE. Il fallback è VARCHAR con la lunghezza impostata sul valore più lungo, o TEXT se i valori superano una soglia.

Prova gratuitamente — nessuna registrazione richiesta

Converti CSV in SQL →

Differenze tra dialetti SQL

SQL non è un solo linguaggio — ogni sistema di database ha il proprio dialetto con sintassi diversa per i tipi di dati, le virgolette e le operazioni in blocco.

  • MySQL — usa backtick per gli identificatori (`nome_colonna`), AUTO_INCREMENT per le sequenze e supporta la sintassi INSERT VALUES multi-riga per un caricamento in blocco efficiente
  • PostgreSQL — usa virgolette doppie per gli identificatori ("nome_colonna"), SERIAL/GENERATED per l'auto-incremento e supporta COPY FROM per l'importazione rapida in blocco direttamente da CSV
  • SQLite — il dialetto più permissivo con tipizzazione flessibile. Usa virgolette doppie per gli identificatori, AUTOINCREMENT per le tabelle rowid e memorizza tutti i dati come testo internamente con regole di affinità di tipo
  • SQL Server — usa parentesi quadre per gli identificatori ([nome_colonna]), IDENTITY per l'auto-incremento e supporta BULK INSERT per l'importazione diretta di file CSV nelle tabelle

Casi d'uso comuni

La conversione CSV in SQL è un'attività comune nella gestione dei dati, nello sviluppo e nei flussi di migrazione.

  • Seeding del database — popolare database di sviluppo o staging con dati di test esportati da fogli di calcolo o sistemi esistenti
  • Migrazione dati — spostare dati tra sistemi quando la sorgente supporta solo l'esportazione CSV e la destinazione richiede l'importazione SQL
  • Importazione di fogli di calcolo — gli utenti aziendali esportano dati da Excel o Google Sheets come CSV e gli sviluppatori devono caricarli in un database
  • Creazione di fixture di test — generare script di inserimento SQL da file CSV contenenti scenari di test per il testing automatizzato
  • Pipeline ETL — estrarre dati come CSV da una sorgente, trasformare nomi e tipi di colonna e caricare tramite SQL nel database di destinazione

Consigli e best practice

Segui queste pratiche per evitare errori comuni nella conversione di dati CSV in istruzioni SQL.

  • Esegui l'escape degli apici singoli — i valori contenenti apostrofi (O'Brien, it's) devono avere gli apici singoli raddoppiati (O''Brien) per prevenire SQL injection ed errori di sintassi
  • Gestisci i valori NULL — le celle CSV vuote dovrebbero corrispondere a NULL in SQL, non a stringhe vuote. La differenza è importante per query, aggregazioni e vincoli
  • Usa inserimenti in batch per le prestazioni — invece di un INSERT per riga, raggruppa le righe in istruzioni INSERT multi-valore (100-1000 righe per istruzione) per un caricamento drasticamente più veloce
  • Valida i tipi di colonna — il rilevamento automatico dei tipi può sbagliare. Rivedi l'istruzione CREATE TABLE generata e modifica i tipi (specialmente DATE vs VARCHAR) prima dell'esecuzione
  • Racchiudi nelle transazioni — circonda le istruzioni INSERT con BEGIN/COMMIT per garantire l'atomicità. Se un inserimento fallisce, puoi eseguire il rollback dell'intero batch invece di avere dati parziali

Domande frequenti

Come gestisco file CSV grandi con migliaia di righe?

Per file grandi, evita di generare un INSERT per riga. Usa la sintassi INSERT multi-riga (INSERT INTO tabella VALUES (...), (...), (...)) con batch di 500-1000 righe per istruzione. Per file molto grandi (milioni di righe), considera l'utilizzo dello strumento di caricamento in blocco nativo del database: LOAD DATA INFILE per MySQL, COPY per PostgreSQL o BULK INSERT per SQL Server.

E i file CSV con codifiche diverse?

I file CSV possono utilizzare UTF-8, Latin-1, Windows-1252 o altre codifiche. I caratteri al di fuori dell'ASCII (lettere accentate, caratteri CJK) possono corrompersi se la codifica è sbagliata. Controlla sempre la codifica del file prima della conversione. La maggior parte degli strumenti moderni usa UTF-8 di default, ma Excel su Windows produce spesso file in Windows-1252. In caso di dubbio, apri il file in un editor di testo che mostri la codifica.

Devo aggiungere chiavi primarie alla tabella generata?

Se il tuo CSV ha una colonna che identifica univocamente ogni riga (come un ID), aggiungi un vincolo PRIMARY KEY su di essa. Se non c'è una chiave naturale, aggiungi una colonna ID auto-incrementante. Le chiavi primarie sono essenziali per ricerche efficienti, JOIN e integrità dei dati. Senza, il database non può identificare efficacemente le singole righe per aggiornamenti o cancellazioni.

Strumenti correlati