使用DuckDB导入CSV文件时如何处理NA(缺失值)问题?
解决DuckDB导入含NA的CSV文件问题
针对社科研究中常见的CSV含NA导致整数列导入失败的问题,分享几个实用的解决思路:
手动定义可空表结构再导入
DuckDB自动推断类型时,若整数列存在NA会触发类型冲突。先创建允许为空的表结构,再指定NA对应SQL的NULL值:-- 先定义表,所有可能含NA的列加上NULL标记 CREATE TABLE social_science_data ( respondent_id INTEGER NULL, survey_score INTEGER NULL, region VARCHAR ); -- 导入时指定CSV中的"NA"为NULL COPY social_science_data FROM 'survey_data.csv' (HEADER, DELIMITER ',', NULL 'NA');自动推断时直接指定NA映射
不想手动建表的话,用COPY命令的NULL参数配合自动类型检测,让DuckDB自动识别可空类型:COPY social_science_data FROM 'survey_data.csv' (HEADER, DELIMITER ',', NULL 'NA', AUTO_DETECT=TRUE);这个方法适合快速导入,无需提前定义表结构,关键是让DuckDB明确CSV里的"NA"就是空值。
统一CSV中的NA格式
社科数据里NA的写法可能不统一(比如"NA"、"N/A"、空单元格),先把所有空值标记统一成同一个字符串(比如全改成"NA"),再用对应参数导入。如果是空单元格,就用NULL '':COPY social_science_data FROM 'cleaned_survey_data.csv' (HEADER, DELIMITER ',', NULL '');
注意事项
- 一定要保证
NULL参数指定的字符串和CSV里的空值标记完全一致,大小写敏感。 - 如果CSV里有引号包裹的字段,记得加上
QUOTE '"'参数适配。
内容的提问来源于stack exchange,提问作者dkolkin
相关产品推荐
相关产品推荐

