PGAdmin导入Supabase导出CSV时timestamp空值报错如何解决
解决PGAdmin导入CSV时timestamp字段空字符串报错问题
问题重现
导入Supabase导出的CSV时遇到PostgreSQL报错:
ERROR: invalid input syntax for type timestamp: ""
CONTEXT: COPY User, line 2, column emailVerified: ""
CSV示例:
"id","name","email","emailVerified","image" "abc123","Guy Man","guyt@man.com","","https://pic.com"
emailVerified为timestamp类型,Supabase导出空值时用""(带引号的空字符串),但PostgreSQL不接受空字符串作为timestamp值,手动跳过该字段录入可正常保存。
可行解决方案
方案1:修改CSV文件的空值格式
将CSV中所有""替换为无引号的NULL,修改后的CSV如下:
"id","name","email","emailVerified","image" "abc123","Guy Man","guyt@man.com",NULL,"https://pic.com"
注意:必须是无引号的NULL,带引号的"NULL"会被识别为字符串,依然报错。
方案2:使用PGAdmin导入时的高级参数设置
在PGAdmin导入向导的Options选项卡中,做以下设置:
- 在
Null String输入框填入""(双引号包裹的空字符串) - 确保
Quote选项设置为"(和CSV的引号格式一致) - 完成后续步骤即可导入
方案3:用SQL COPY命令手动导入(最可靠)
直接在PGAdmin的SQL编辑器中执行COPY命令,灵活控制空值解析规则:
COPY "User" (id, name, email, emailVerified, image) FROM '/absolute/path/to/your/file.csv' DELIMITER ',' CSV HEADER QUOTE '"' NULL '';
NULL ''表示将CSV中去掉引号后的空字符串解析为PostgreSQL的NULL值"User"是PostgreSQL保留字,必须用双引号包裹- 注意替换为CSV文件的绝对路径(远程服务器需确保文件在服务器可访问路径)
为什么之前的尝试失败?
如果之前将CSV中的""改成"NULL",PostgreSQL会把它当作字符串"NULL"而非NULL值,依然不符合timestamp类型要求;若PGAdmin的Null设置填的是NULL而非"",也无法匹配CSV中的空字符串格式。
内容的提问来源于stack exchange,提问作者atomic-ag
相关产品推荐
相关产品推荐

