如何将Excel XLSX文件导入DuckDB并指定某列数据类型
解决DuckDB导入Excel时指定列类型的问题
可以通过DuckDB的read_xlsx函数的types参数实现需求——指定特定列为VARCHAR类型,其余列保持自动推断:
两种实现方式
1. 已知目标列名时
如果知道报错的E列的列名(比如假设列名为TimeZone),直接在types参数中指定该列的类型:
CREATE TABLE tblVLANs AS SELECT * FROM read_xlsx( 'C:\VLANs.xlsx', types = {'TimeZone': 'VARCHAR'} );
2. 仅知道列位置时
如果不清楚列名,可通过列的位置索引(E列是第5列,索引从1开始)指定:
CREATE TABLE tblVLANs AS SELECT * FROM read_xlsx( 'C:\VLANs.xlsx', types = {5: 'VARCHAR'} );
原理说明
types参数允许你为单个或多个列强制指定数据类型,未被指定的列会继续由DuckDB自动推断适配的类型,这样就能避免因某列存在混合数据类型(比如数值和字符串)导致的解析错误。
内容的提问来源于stack exchange,提问作者Planet-9




