安装扩展
要从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 ... AS
从SELECT
语句中创建:
CREATE TABLE new_tbl AS
SELECT * FROM st_read('test_excel.xlsx', layer = 'Sheet1');
加载到现有表
要将数据从查询加载到现有表中,请使用INSERT INTO
从SELECT
语句中:
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 配置选项页面。