Was das Tool macht
Um eine Tabelle aus einer Tabellenkalkulation in eine Datenbank zu laden, schreibt man meist eine Tabellendefinition und eine lange Liste von INSERT-Anweisungen von Hand und maskiert dabei jedes Apostroph. Dieses Tool erledigt das für Sie: CSV einfügen und ein sofort ausführbares SQL-Skript mit einer CREATE TABLE-Anweisung und gebündelten mehrzeiligen INSERT-Anweisungen erhalten.
Es folgt RFC 4180 und verarbeitet Felder in Anführungszeichen, Kommas und Zeilenumbrüche in Zellen sowie verdoppelte Anführungszeichen. Strings werden für die gewählte Datenbank korrekt maskiert, einschließlich Backslashes in MySQL und N'…'-Unicode-Strings in SQL Server.
So funktioniert es
- Fügen Sie CSV ein, laden Sie eine
.csv- oder.tsv-Datei hoch oder klicken Sie auf Beispiel. - Geben Sie den Tabellennamen ein. Für ein Schema verwenden Sie einen Punkt, etwa
public.ordersoderdbo.orders. - Wählen Sie den Dialekt: MySQL / MariaDB, PostgreSQL, SQLite oder SQL Server.
- Wählen Sie die Zeilen pro INSERT und schalten Sie CREATE TABLE aus, wenn die Tabelle schon existiert.
- Kopieren Sie das SQL oder laden Sie es als
.sql-Datei herunter und führen Sie es mit Ihrem Datenbank-Client aus.
Das Trennzeichen wird automatisch erkannt; Sie können auch Komma, Semikolon, Tab oder Pipe fest einstellen. Enthält die erste Zeile Daten statt Spaltennamen, schalten Sie Erste Zeile ist Kopfzeile aus; die Spalten heißen dann column_1, column_2 und so weiter.
Beispiel
Diese CSV-Daten:
id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false
werden zu diesem Skript für 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);
Das Apostroph in Ada's wird verdoppelt, der leere Preis wird NULL, und Zahlen sowie boolesche Werte stehen ohne Anführungszeichen.
Typen und Dialekte
- MySQL / MariaDB: Bezeichner in Backticks,
INT,DECIMAL,BOOLEAN,DATE,DATETIME,VARCHAR(255)oderTEXT; Backslashes in Strings werden maskiert. - PostgreSQL: Bezeichner in doppelten Anführungszeichen,
INTEGER,NUMERIC,BOOLEAN,DATE,TIMESTAMPundTEXT. - SQLite: Bezeichner in doppelten Anführungszeichen und die SQLite-Speicherklassen
INTEGER,REALundTEXT; boolesche Werte werden als 1 und 0 geschrieben. - SQL Server: Bezeichner in eckigen Klammern,
INT,DECIMAL,BIT,DATE,DATETIME2undNVARCHAR, mitN'…'-Literalen und höchstens 1000 Zeilen pro INSERT. - Leere Zellen werden zu
NULL. Schalten Sie Leere Zellen als NULL aus, um in Textspalten leere Strings zu behalten. - Prüfen Sie die erkannten Typen, bevor Sie das Skript auf Produktivdaten ausführen: Eine Spalte, die in der Stichprobe nur kleine Zahlen enthält, braucht später vielleicht einen größeren Typ.
FAQ
› Welche Datenbanken werden unterstützt?
MySQL (und MariaDB), PostgreSQL, SQLite und Microsoft SQL Server. Der Dialekt bestimmt, wie Tabellen- und Spaltennamen gequotet und Strings maskiert werden, welche Spaltentypen verwendet werden und wie boolesche Werte geschrieben werden.
› Wie werden die Spaltentypen bestimmt?
Jede Spalte wird durchsucht: Ganzzahlen werden INT oder BIGINT, Dezimalzahlen DECIMAL mit ausreichender Genauigkeit, true/false BOOLEAN (BIT in SQL Server), ISO-Datumsangaben DATE oder DATETIME, alles andere Text. Zahlen mit führenden Nullen, etwa Postleitzahlen, bleiben Text. Schalten Sie Typen erkennen aus, damit alle Spalten Text sind.
› Warum ist SQL Server auf 1000 Zeilen pro INSERT begrenzt?
SQL Server lehnt eine VALUES-Liste mit mehr als 1000 Zeilen ab, deshalb werden größere Stapel in diesem Dialekt auf 1000 begrenzt. Andere Datenbanken akzeptieren größere Stapel, doch 100 bis 1000 Zeilen pro Anweisung sind ein guter Kompromiss zwischen Geschwindigkeit und Länge.
› Wird meine CSV-Datei hochgeladen?
Nein. Parsen und SQL-Erzeugung laufen vollständig in Ihrem Browser, die Daten verlassen Ihr Gerät also nie.