我正在解决一个问题,我无法将数据复制到Rails中的postgresql,因为日期格式与默认的postgresql ISO MDY不匹配。
在我的本地机器上,我只是将日期样式更改为欧洲语,以便我的DMY数据正确匹配。
像往常一样,在Heroku生产服务器上执行此操作并不容易。使用下面的步骤,我尝试更改日期风格,但它不会持续存在(如退出,返回并询问postgres向我显示日期风格)。
任何想法如何坚持这一点。所有研究都表明不要这样做,并且要更改我的代码以将数据转换为MDY,但我从遗留系统中提取数百万行,默认为DMY并使用postgresql copy命令以尽可能最快的方式执行此操作。似乎更容易告诉Postgresql更改日期风格而不是修复其他所有内容:/
$ heroku pg:psql
app-name::CRIMSON=> SET datestyle TO 'european';
SET
app-name::CRIMSON=> SHOW datestyle;
DateStyle
-----------
ISO, DMY
(1 row)
app-name::CRIMSON-> \q
$ heroku pg:psql
---> Connecting to HEROKU_POSTGRESQL_CRIMSON_URL (DATABASE_URL)
psql (9.4.1, server 9.3.6)
SSL connection (protocol: TLSv1.2, cipher: jibberish, bits: 256, compression: off)
Type "help" for help.
app-name::CRIMSON=> SHOW datestyle;
DateStyle
-----------
ISO, MDY
(1 row)
答案 0 :(得分:2)
任何想法如何坚持这一点。
datestyle
是一个服务器设置(在postgresql.conf中),客户端会话可以覆盖(使用set datestyle ...
)单个事务或单个会话。有两种方法可以将更改保留在单个会话之外。
ALTER DATABASE your_database_name SET datestyle TO 'ISO, european';
(应该在Heroku上为你工作。我会把它设置为一个独立的迁移。)FWIW,默认不是 ISO MDY ,它是 ISO,MDY 。 (两个值,用逗号分隔。)第一个是“输出格式规范”;第二个是“年/月/日订购的输入/输出规范”。 (见Client Connection Defaults)