Heroku Postgresql SET datestyle 到欧洲
Heroku Postgresql SET datestyle To european
我正在解决无法将数据复制到 Rails 中的 postgresql 的问题,因为日期格式与默认的 postgresql ISO MDY 不匹配。
在我的本地机器上,我刚刚将日期风格更改为欧洲风格,以便我的 DMY 数据正确匹配。
像往常一样,在 Heroku 生产服务器上执行此操作并不容易。使用下面的步骤,我尝试更改 datestyle,这有效,但它不会持续存在(如退出、返回并要求 postgres 向我显示 datestyle 所示)。
关于我如何坚持这一点的任何想法。所有研究都表明不要这样做并更改我的代码以将数据转换为 MDY,但我正在从默认为 DMY 的遗留系统中提取数百万行,并使用 postgresql 复制命令以最快的方式执行此操作。似乎只告诉 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)
Any ideas how I can persist this.
datestyle
是一个服务器设置(在 postgresql.conf 中),客户端会话可以为单个事务或单个会话覆盖(使用 set datestyle ...
)。有两种方法可以在单个会话之外保留更改。
- 更改postgresql.conf中的设置并重新启动服务器。 (在 Heroku 上对你不起作用。你肯定没有编辑 postgresql.conf 的权限,对吧?)
ALTER DATABASE your_database_name SET datestyle TO 'ISO, european';
(应该可以在 Heroku 上为您工作。我将其设置为独立迁移。)
FWIW,默认值不是 ISO MDY,而是 ISO,MDY。 (两个值,用逗号分隔。)第一个是 "output format specification";第二个是"input/output specification for year/month/day ordering"。 (参见 Client Connection Defaults)
我正在解决无法将数据复制到 Rails 中的 postgresql 的问题,因为日期格式与默认的 postgresql ISO MDY 不匹配。
在我的本地机器上,我刚刚将日期风格更改为欧洲风格,以便我的 DMY 数据正确匹配。
像往常一样,在 Heroku 生产服务器上执行此操作并不容易。使用下面的步骤,我尝试更改 datestyle,这有效,但它不会持续存在(如退出、返回并要求 postgres 向我显示 datestyle 所示)。
关于我如何坚持这一点的任何想法。所有研究都表明不要这样做并更改我的代码以将数据转换为 MDY,但我正在从默认为 DMY 的遗留系统中提取数百万行,并使用 postgresql 复制命令以最快的方式执行此操作。似乎只告诉 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)
Any ideas how I can persist this.
datestyle
是一个服务器设置(在 postgresql.conf 中),客户端会话可以为单个事务或单个会话覆盖(使用 set datestyle ...
)。有两种方法可以在单个会话之外保留更改。
- 更改postgresql.conf中的设置并重新启动服务器。 (在 Heroku 上对你不起作用。你肯定没有编辑 postgresql.conf 的权限,对吧?)
ALTER DATABASE your_database_name SET datestyle TO 'ISO, european';
(应该可以在 Heroku 上为您工作。我将其设置为独立迁移。)
FWIW,默认值不是 ISO MDY,而是 ISO,MDY。 (两个值,用逗号分隔。)第一个是 "output format specification";第二个是"input/output specification for year/month/day ordering"。 (参见 Client Connection Defaults)