Zum Inhalt springen

Excel-Export

DuckDB unterstützt den Export von Daten in Excel-.xlsx-Dateien über die Erweiterung excel. Bitte beachten Sie, dass .xls-Dateien nicht unterstützt werden.

Um die Erweiterung zu installieren und zu laden, führen Sie aus:

INSTALL excel;
LOAD excel;

Excel-Tabellenblätter exportieren

Um eine Tabelle in eine Excel-Datei zu exportieren, verwenden Sie die Anweisung COPY mit der Option FORMAT xlsx:

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx);

Das Ergebnis einer Abfrage kann auch direkt in eine Excel-Datei exportiert werden:

COPY (SELECT * FROM tbl) TO 'output.xlsx' WITH (FORMAT xlsx);

Oder:

COPY (SELECT * FROM tbl) TO 'output.xlsx';

Um die Spaltennamen als erste Zeile in die Excel-Datei zu schreiben, verwenden Sie die Option HEADER:

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx, HEADER true);

Um das Arbeitsblatt in der entstehenden Excel-Datei zu benennen, verwenden Sie die Option SHEET:

COPY tbl TO 'output.xlsx' WITH (FORMAT xlsx, SHEET 'Sheet1');

Typumwandlungen

Da Excel im Wesentlichen nur Zahlen oder Zeichenketten speichern kann – das Äquivalent von VARCHAR und DOUBLE – werden beim Schreiben von XLSX-Dateien automatisch die folgenden Typumwandlungen angewendet:

  • Numerische Typen werden in DOUBLE umgewandelt.
  • Zeitliche Typen (TIMESTAMP, DATE, TIME usw.) werden in Excel-„Serial“-Zahlen umgewandelt, also die Anzahl der Tage seit 1900-01-01 für Datumsangaben und den Bruchteil eines Tages für Uhrzeiten. Diese werden anschließend mit einem „Zahlenformat“ formatiert, sodass sie in Excel als Datum oder Uhrzeit erscheinen.
  • TIMESTAMP_TZ und TIME_TZ werden in UTC-TIMESTAMP bzw. TIME umgewandelt; die Zeitzoneninformation geht dabei verloren.
  • BOOLEAN-Werte werden in 1 und 0 umgewandelt und mit einem „Zahlenformat“ versehen, sodass sie in Excel als TRUE und FALSE erscheinen.
  • Alle anderen Typen werden in VARCHAR umgewandelt und anschließend als Textzellen geschrieben.

Sie können Spalten natürlich auch explizit in einen anderen Typ umwandeln, bevor Sie sie nach Excel exportieren:

COPY (SELECT CAST(a AS VARCHAR), b FROM tbl) TO 'output.xlsx' WITH (FORMAT xlsx);

Siehe auch

DuckDB kann Excel-Dateien auch importieren. Weitere Details zur Excel-Unterstützung finden Sie auf der Seite der excel-Erweiterung.