DBeaver导入CSV到PostgreSQL时如何将inet/uuid空值识别为null
问题描述
使用DBeaver工具将CSV文件导入PostgreSQL数据库时,导入包含inet数据类型空值列的CSV文件会触发SQL执行报错,具体报错信息如下:
Error occurred during SQL query execution
报错原因:
SQL Error [22P02]: 错误:integer类型的输入语法无效:""
位置:468
报错根因
Excel默认导出CSV的逻辑会将所有空单元格转成空字符串"",PostgreSQL无法将空字符串识别为inet、integer等数据类型的合法NULL值,导入时就会抛出类型不匹配的语法错误。
Excel源文件修复操作步骤
- 打开待导入的Excel源文件,定位到所有存储inet类型数据、整数类型数据的列,选中这些列包含数据的全部单元格范围
- 按下快捷键
Ctrl+H调出查找替换窗口 - 「查找内容」输入框保持完全空白,不要输入任何字符;「替换为」输入框填入
\N(反斜杠+大写N,是PostgreSQL批量导入时默认识别的空值标记) - 点击「全部替换」,等待替换完成后确认所有原空单元格都已填充为
\N - 将处理完成的文件重新另存为CSV格式,即可正常导入
- 注意事项:不要在空单元格中手动填入空格、小写
null、带引号的"null"这类内容,这些值不属于PostgreSQL认可的合法空值格式,依然会触发类型报错
内容的提问来源于stack exchange,提问作者Jagdish
相关产品推荐
相关产品推荐

