以pg_dump转移时区



我在PostgreSQL中创建了一个时区,如下所示:

ALTER DATABASE mydatabase SET TimeZone = 'MST';

我也想在还原的数据库中使用预设时区。如果我通过pg_dump备份它并使用pg_restore还原,则pg_settings/TimeZone将设置回本地时间。

如何转移时区?

示例:

t=# create database z;
CREATE DATABASE
t=# alter database z set timezone to 'UTC+2';
ALTER DATABASE
t=# select now();
             now
------------------------------
 2018-01-17 08:41:10.12834+00
(1 row)
t=# c z
You are now connected to database "z" as user "postgres".
z=# select now();
              now
-------------------------------
 2018-01-17 06:41:15.588483-02
(1 row)

正如您在连接到数据库后所看到的z客户端"默认"TimeZone更改。但是您不应该认为数据库中的日期发生了变化 - 不。所有时区感知时间戳都以 UTC 格式保存。

对于时区时间戳,内部存储的值始终位于 世界协调时

现在回到你的问题。事实上:

z-# ! pg_dump -d z  | grep "TimeZone"

如果备份数据库 Z,则不会导出其设置。所以你需要使用pg_dumpall

z-# ! pg_dumpall | grep "TimeZone"
ALTER DATABASE z SET "TimeZone" TO 'UTC+2';

相关内容

  • 没有找到相关文章

最新更新