DevToolPal
IT

Convertitore da CSV a SQL

Trasforma un CSV in istruzioni CREATE TABLE e INSERT per MySQL, PostgreSQL, SQLite o SQL Server, con tipi di colonna dedotti.

Eseguito in locale, mai caricato

Opzioni

Input

0 caratteri · 0 B

Output

0 caratteri · 0 B

Cosa fa

Caricare un foglio di calcolo in un database di solito significa scrivere a mano la definizione della tabella e un lungo elenco di istruzioni INSERT, facendo l’escape di ogni apostrofo. Questo strumento lo fa per te: incolla un CSV e ottieni uno script SQL pronto da eseguire, con un’istruzione CREATE TABLE e istruzioni INSERT multiriga raggruppate in lotti.

Segue la RFC 4180: gestisce campi tra virgolette, virgole e a capo all’interno delle celle e virgolette raddoppiate. Le stringhe vengono gestite correttamente per il database scelto, comprese le barre rovesciate in MySQL e le stringhe Unicode N'…' di SQL Server.

Come si usa

  1. Incolla un CSV, carica un file .csv o .tsv, oppure fai clic su Esempio.
  2. Inserisci il Nome tabella. Usa un punto per lo schema, ad esempio public.orders o dbo.orders.
  3. Scegli il Dialetto: MySQL / MariaDB, PostgreSQL, SQLite o SQL Server.
  4. Scegli le Righe per INSERT e disattiva CREATE TABLE se la tabella esiste già.
  5. Copia l’SQL o scaricalo come file .sql ed eseguilo con il tuo client di database.

Il delimitatore viene rilevato automaticamente; puoi anche impostare virgola, punto e virgola, tab o pipe. Se la prima riga contiene dati invece dei nomi delle colonne, disattiva La prima riga è l’intestazione e le colonne si chiameranno column_1, column_2 e così via.

Esempio

Questo CSV:

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

diventa questo script per PostgreSQL:

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

L’apostrofo di Ada's viene raddoppiato, il prezzo vuoto diventa NULL e numeri e booleani sono scritti senza virgolette.

Tipi e dialetti

  • MySQL / MariaDB: identificatori tra backtick, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) o TEXT; le barre rovesciate nelle stringhe vengono gestite con escape.
  • PostgreSQL: identificatori tra virgolette doppie, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP e TEXT.
  • SQLite: identificatori tra virgolette doppie e le classi di memorizzazione di SQLite INTEGER, REAL e TEXT; i booleani si scrivono 1 e 0.
  • SQL Server: identificatori tra parentesi quadre, INT, DECIMAL, BIT, DATE, DATETIME2 e NVARCHAR, con letterali N'…' e al massimo 1000 righe per INSERT.
  • Le celle vuote diventano NULL. Disattiva Celle vuote come NULL per mantenere stringhe vuote nelle colonne di testo.
  • Controlla i tipi dedotti prima di eseguire lo script su dati di produzione: una colonna che nel campione contiene solo numeri piccoli potrebbe in futuro richiedere un tipo più ampio.

Domande frequenti

› Quali database sono supportati?

MySQL (e MariaDB), PostgreSQL, SQLite e Microsoft SQL Server. Il dialetto stabilisce come vengono quotati i nomi di tabelle e colonne, come vengono fatti gli escape delle stringhe, quali tipi di colonna si usano e come si scrivono i booleani.

› Come vengono scelti i tipi di colonna?

Ogni colonna viene analizzata: gli interi diventano INT o BIGINT, i decimali DECIMAL con precisione sufficiente, true/false BOOLEAN (BIT in SQL Server), le date ISO DATE o DATETIME e tutto il resto testo. I numeri con zeri iniziali, come i CAP, restano testo. Disattiva Rileva i tipi per avere tutte le colonne di testo.

› Perché SQL Server è limitato a 1000 righe per INSERT?

SQL Server rifiuta un elenco VALUES con più di 1000 righe, quindi per questo dialetto i lotti più grandi vengono limitati a 1000. Altri database accettano lotti maggiori, ma 100–1000 righe per istruzione sono un buon compromesso tra velocità e dimensione.

› Il mio CSV viene caricato online?

No. L’analisi e la generazione dell’SQL avvengono interamente nel browser, quindi i dati non lasciano mai il tuo dispositivo.