导入CSV至PostgreSQL前如何正确设置日期格式?
解决PostgreSQL导入CSV时日期格式不匹配的问题
针对你遇到的dd.mm.yyyy格式日期无法导入的问题,有两种可靠的解决方式:
方法一:临时修改会话的日期格式
在执行COPY命令前,先设置当前会话的日期解析风格为日-月-年(DMY),让PostgreSQL能正确识别CSV里的日期格式:
-- 临时设置会话日期格式为DMY SET datestyle TO 'DMY, ISO'; -- 执行导入命令 COPY application FROM 'blablabla' DELIMITER ';' CSV HEADER;
该设置仅对当前会话生效,不会影响其他数据库连接或全局配置。
方法二:在COPY命令中直接指定日期风格(PostgreSQL 12+适用)
若你使用的是PostgreSQL 12及以上版本,可直接在COPY的WITH子句里指定DATESTYLE参数,无需单独设置会话:
COPY application FROM 'blablabla' WITH ( FORMAT CSV, DELIMITER ';', HEADER, DATESTYLE 'DMY' );
注意事项
- 如果CSV中存在多种日期格式,需确保DATESTYLE设置能覆盖所有场景,或先统一CSV内的日期格式。
- 确认文件路径
'blablabla'是PostgreSQL服务器可访问的路径;若通过远程客户端导入,需替换为\copy命令并使用本地文件路径。
内容的提问来源于stack exchange,提问作者Motiejus Skliutas
相关产品推荐
相关产品推荐

