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 本质上只支持存储数字或字符串(对应 VARCHAR 与 DOUBLE),写入 XLSX 文件时会自动应用以下类型转换:
- 数值类型会 cast 为
DOUBLE。 - 时间类型(
TIMESTAMP、DATE、TIME等)会转换为 Excel “序列值”:日期是自 1900-01-01 起的天数,时间是一天中的小数;随后应用“数字格式”,以便在 Excel 中显示为日期/时间。 TIMESTAMP_TZ与TIME_TZ分别 cast 为 UTCTIMESTAMP与TIME,时区信息会丢失。BOOLEAN会转换为1与0,并应用“数字格式”,使其在 Excel 中显示为TRUE与FALSE。- 其他类型都会 cast 为
VARCHAR后写入为文本单元格。
当然,你也可以在导出前显式将列 cast 为其他类型:
COPY (SELECT CAST(a AS VARCHAR), b FROM tbl) TO 'output.xlsx' WITH (FORMAT xlsx);
另见
Goose 也支持导入 Excel 文件。
关于 Excel 支持的更多细节,请参阅 excel 扩展页面。