⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Excel Import

安装扩展

要从Excel文件中读取数据,请安装并加载spatial extension。 每个DuckDB连接只需执行一次此操作。

INSTALL spatial;
LOAD spatial;

导入Excel表格

在查询的FROM子句中使用st_read函数:

SELECT * FROM st_read('test_excel.xlsx');

layer 参数允许指定 Excel 工作表的名称:

SELECT * FROM st_read('test_excel.xlsx', layer = 'Sheet1');

创建新表

要使用查询结果创建新表,请使用CREATE TABLE ... ASSELECT语句中创建:

CREATE TABLE new_tbl AS
    SELECT * FROM st_read('test_excel.xlsx', layer = 'Sheet1');

加载到现有表

要将数据从查询加载到现有表中,请使用INSERT INTOSELECT语句中:

INSERT INTO tbl
    SELECT * FROM st_read('test_excel.xlsx', layer = 'Sheet1');

Options

底层GDAL库也提供了几个配置选项,用于进行XLSX解析。 你可以通过st_read函数的open_options参数以'KEY=VALUE'字符串列表的形式传递这些选项。

导入带有/不带有标题的工作表

选项 HEADERS 有三个可能的值:

  • FORCE: 将第一行视为标题
  • DISABLE 将第一行视为数据行
  • AUTO 尝试自动检测(默认)

例如,要将第一行视为标题,请运行:

SELECT *
FROM st_read(
    'test_excel.xlsx',
    layer = 'Sheet1',
    open_options = ['HEADERS=FORCE']
);

检测类型

选项 FIELD_TYPE 定义了字段类型应如何处理:

  • STRING: 所有字段都应作为字符串加载(VARCHAR 类型)
  • AUTO: 字段类型应自动检测(默认)

例如,要将第一行视为标题并使用自动检测类型,请运行:

SELECT *
FROM st_read(
    'test_excel.xlsx',
    layer = 'Sheet1',
    open_options = ['HEADERS=FORCE', 'FIELD_TYPES=AUTO']
);

将字段视为字符串:

SELECT *
FROM st_read(
    'test_excel.xlsx',
    layer = 'Sheet1',
    open_options = ['FIELD_TYPES=STRING']
);

参见

DuckDB 还可以 导出 Excel 文件。 有关 Excel 支持的更多详细信息,请参阅 空间扩展页面GDAL XLSX 驱动页面GDAL 配置选项页面