You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL导入TSV文件时deathYear字段\N值引发整数类型报错求助

这个问题我之前处理IMDb数据集的时候也碰到过!根源在于PostgreSQL的COPY命令默认不会把\N识别为NULL值,而是当成普通字符串,而你的deathYear是INTEGER类型,自然就报错了。下面给你最直接的解决办法:

解决方法

最简单的方案就是在COPY语句里显式指定NULL的表示符为\N,让PostgreSQL把TSV里的\N转换成NULL值存入INTEGER字段。修改后的导入语句如下:

COPY name_mock FROM '/home/pathtofile/name.basics.tsv' 
DELIMITER E'\t' 
CSV HEADER
NULL '\N';

为什么这个能生效?

  • 默认情况下,PostgreSQL的COPY命令会把空字符串识别为NULL,但很多TSV数据集(比如你用的IMDb数据)习惯用\N来表示缺失值(比如未逝世的演员)。
  • 通过添加NULL '\N'参数,你相当于告诉PostgreSQL:“遇到\N就把它当成NULL处理”,而你的deathYear字段没有加NOT NULL约束,完全可以存储NULL值。

可选验证步骤

导入完成后,你可以执行下面的SQL确认效果:

SELECT nconst, primaryName, deathYear FROM name_mock WHERE deathYear IS NULL LIMIT 10;

应该能看到那些未逝世演员的deathYear显示为NULL,而不是导入报错了。

内容的提问来源于stack exchange,提问作者qer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 11:12:36