DBeaver导入工具:将CSV中YES转为PostgreSQL布尔值的转换表达式
解决CSV导入PostgreSQL时"YES"转布尔值的问题
根据你使用的导入工具,分两种场景给出可行的转换表达式:
1. 使用psql的COPY命令导入
直接在COPY语句里通过比较运算或CASE表达式完成转换:
基础写法(仅将"YES"转为true,其他值转为false)
COPY target_table (other_col1, other_col2, boolean_column) FROM '/path/to/your/data.csv' DELIMITER ',' CSV HEADER (boolean_column = (boolean_column = 'YES'));
严谨写法(区分"YES"/"NO",其他值设为NULL)
COPY target_table (other_col1, other_col2, boolean_column) FROM '/path/to/your/data.csv' DELIMITER ',' CSV HEADER (boolean_column = CASE WHEN boolean_column = 'YES' THEN TRUE WHEN boolean_column = 'NO' THEN FALSE ELSE NULL END);
2. 使用pgAdmin等可视化导入工具
在导入向导的「数据转换」环节,不要用双等号==,换成标准SQL的单等号=即可:
"column_in_file" = 'YES'
如果需要兼容"NO"和空值,可使用CASE表达式覆盖更多场景:
CASE WHEN "column_in_file" = 'YES' THEN TRUE WHEN "column_in_file" = 'NO' THEN FALSE ELSE NULL END
为什么你之前的表达式无效?
PostgreSQL虽支持==作为比较运算符,但部分导入工具的表达式解析器仅认可标准SQL的单等号=;另外如果列名包含空格、特殊字符,需要用双引号包裹列名才能正确识别。
内容的提问来源于stack exchange,提问作者XGrzesX
相关产品推荐
相关产品推荐

