跳到主要内容

Excel 导出

Goose 支持通过 excel 扩展将数据导出到 Excel .xlsx 文件。请注意不支持 .xls 文件。

安装并加载该扩展请执行:

INSTALL excel;
LOAD excel;

导出 Excel 工作表

要将表导出为 Excel 文件,请使用带 FORMAT xlsx 选项的 COPY 语句:

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

查询结果也可以直接导出到 Excel 文件:

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

或者:

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

若要将列名写入 Excel 第一行,请使用 HEADER 选项:

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

若要指定结果 Excel 文件中的工作表名称,请使用 SHEET 选项:

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

类型转换

由于 Excel 本质上只支持存储数字或字符串(对应 VARCHARDOUBLE),写入 XLSX 文件时会自动应用以下类型转换:

  • 数值类型会 cast 为 DOUBLE
  • 时间类型(TIMESTAMPDATETIME 等)会转换为 Excel “序列值”:日期是自 1900-01-01 起的天数,时间是一天中的小数;随后应用“数字格式”,以便在 Excel 中显示为日期/时间。
  • TIMESTAMP_TZTIME_TZ 分别 cast 为 UTC TIMESTAMPTIME,时区信息会丢失。
  • BOOLEAN 会转换为 10,并应用“数字格式”,使其在 Excel 中显示为 TRUEFALSE
  • 其他类型都会 cast 为 VARCHAR 后写入为文本单元格。

当然,你也可以在导出前显式将列 cast 为其他类型:

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

另见

Goose 也支持导入 Excel 文件。 关于 Excel 支持的更多细节,请参阅 excel 扩展页面