Tipps zum CSV-Import
Im Folgenden finden Sie Tipps für den Import komplexer CSV-Dateien. In den Beispielen verwenden wir die Datei flights.csv.
Header-Flag überschreiben, wenn der Header nicht korrekt erkannt wird
Enthält eine Datei nur Zeichenketten-Spalten, kann die automatische header-Erkennung fehlschlagen. Geben Sie die Option header an, um dieses Verhalten zu überschreiben.
SELECT * FROM read_csv('flights.csv', header = true);Namen angeben, wenn die Datei keinen Header enthält
Enthält die Datei keinen Header, werden standardmäßig automatisch Namen erzeugt. Mit der Option names können Sie eigene Namen vorgeben.
SELECT * FROM read_csv('flights.csv', names = ['DateOfFlight', 'CarrierName']);Typen einzelner Spalten überschreiben
Mit dem Flag types überschreiben Sie die Typen nur bestimmter Spalten, indem Sie ein Struct mit Zuordnungen name → type übergeben.
SELECT * FROM read_csv('flights.csv', types = {'FlightDate': 'DATE'});COPY verwenden, wenn Daten in eine Tabelle geladen werden
Die COPY-Anweisung kopiert Daten direkt in eine Tabelle. Der CSV-Reader verwendet das Schema der Tabelle statt die Typen aus der Datei automatisch zu erkennen. Das beschleunigt die Autoerkennung und verhindert Fehler bei der Autoerkennung.
COPY tbl FROM 'test.csv';union_by_name verwenden, wenn Dateien unterschiedliche Schemas haben
Die Option union_by_name vereinheitlicht das Schema von Dateien mit unterschiedlichen oder fehlenden Spalten. Für Dateien, denen bestimmte Spalten fehlen, werden NULL-Werte eingesetzt.
SELECT * FROM read_csv('flights*.csv', union_by_name = true);Um Daten in eine bestehende Tabelle zu laden, die mehr Spalten hat als die CSV-Datei, können Sie die Klausel INSERT INTO ... BY NAME verwenden:
INSERT INTO tbl BY NAME SELECT * FROM read_csv('input.csv');Stichprobengröße
Wenn der CSV-Sniffer den Typ nicht korrekt erkennt, erhöhen Sie die Stichprobengröße.
Die Option sample_size = -1 zwingt den Sniffer, die gesamte Datei zu lesen:
SELECT * FROM read_csv('my_csv_file.csv', sample_size = -1);