如何在PostgreSQL中成功上传含timestamp类型的数据
解决PostgreSQL timestamp数据上传格式错误问题
错误提示里的21/04/2020 18:19是日/月/年格式,PostgreSQL默认的日期解析规则不识别这种格式,导致导入失败。以下是几种可行的解决办法:
方法一:临时修改当前会话的日期格式
执行这条SQL命令,临时调整当前连接的日期解析规则:
SET datestyle TO 'DMY, ISO';
之后再运行COPY命令导入数据即可。这个设置只在当前会话有效,关闭连接后自动恢复默认。
方法二:修改数据库级别的默认日期格式
如果需要长期支持日/月/年格式,直接修改目标数据库的默认设置:
ALTER DATABASE your_database_name SET datestyle TO 'DMY, ISO';
修改完成后需要重新连接数据库,新的设置才会生效。
方法三:导入时显式转换日期格式
不想改动数据库设置的话,可以在COPY命令里用TO_TIMESTAMP函数直接转换字符串:
COPY get_safe (col1, col2, joined_getsafe_at, ...) FROM '/path/to/your/file.csv' DELIMITER ',' -- 根据你的实际文件分隔符调整 CSV (col1, col2, joined_getsafe_at = TO_TIMESTAMP(joined_getsafe_at, 'DD/MM/YYYY HH24:MI'), ...);
注意要对应好列的顺序,确保转换的是目标日期列。
方法四:预处理数据文件
直接把数据文件里的日期格式改成PostgreSQL默认识别的YYYY-MM-DD HH:MI格式(比如2020-04-21 18:19),修改后就能直接用COPY命令导入,无需调整数据库设置。
内容的提问来源于stack exchange,提问作者Ahmed Al Mubarak
相关产品推荐
相关产品推荐

