40得票1回答
pg_restore会覆盖现有的表吗?

假设我有两个主机服务器s1和s2。在这两台服务器上,我都有一个名为n1的模式,在服务器s1的模式n1中进行了一些表的更改。我希望对服务器s2的模式n1进行相同的更改。我的计划是使用pg_dump备份服务器s1的模式n1,并使用pg_restore将其恢复到服务器s2中。现在我的问题是,由于服务...

36得票4回答
如何使用PostgreSQL 9.5+的UPSERT判断upsert操作是否为更新?

在9.5版本之前,可写的CTE被认为是UPSERT的解决方案,如在PostgreSQL中进行插入或更新?所述。 使用以下可写的CTEs习惯用语可以执行UPSERT,并确定它是UPDATE还是INSERT: WITH update_cte AS ( UPDATE t ...

31得票7回答
PostgreSQL比较两个jsonb对象

使用PostgreSQL(v9.5),JSONB格式提供了很棒的机会。但现在我卡在了一个看起来相对简单的操作上; 比较两个jsonb对象;查看一个文档与另一个文档相比有什么不同或缺失。 到目前为止我所拥有的WITH reports(id,DATA) AS ( VALUE...

28得票1回答
无需更新即可返回带有ON CONFLICT的INSERT中的行

我经常遇到这样一种情况,需要从一张拥有唯一约束的表中获取一行数据,如果不存在,则创建并返回它。 例如,我的表可能是:CREATE TABLE names( id SERIAL PRIMARY KEY, name TEXT, CONSTRAINT names_name_...

27得票3回答
如何在一个事务中禁用PostgreSQL触发器?

我需要在一个事务中临时禁用一个PostgreSQL触发器,但是不要对表进行硬锁定。有人知道这是否可能吗? 类似这样的操作,可以在此事务之外禁用触发器而不锁定表。BEGIN TRANSACTION; ALTER TABLE foo DISABLE TRIGGER bar; -- DO...

27得票1回答
如何在PostgreSQL中插入或更新多行数据

我想在PostgreSQL 9.5.2中编写以下查询:INSERT INTO a (id, x) SELECT id, x FROM b ON CONFLICT (id) DO UPDATE SET x = b.x WHERE b.y < 100 但我得到了ERR...

26得票2回答
Postgres - ON CONFLICT - 如何知道是否发生了UPDATE而非INSERT

我有一张桌子CREATE TABLE foo ( f0 int, time_stamp timestamp, CONSTRAINT foo_pk PRIMARY KEY (f0) ) 我的需求是需要高效地向这个表写入大量数据,因此性能至关重要。有时,我会写入一个已经存在...

24得票2回答
刷新物化视图“CONCURRENTLY”会导致表膨胀。

在PostgreSQL 9.5中,我决定创建一个名为“effects”的物化视图,并安排每小时并发刷新,因为我希望它始终可用: REFRESH MATERIALIZED VIEW CONCURRENTLY effects; 一开始一切正常,我的物化视图在进行刷新时磁盘空间的使用量保持相对稳定...

23得票4回答
如何在docker上更改postgreSQL 9.5的时区?

默认时区为UTC。 但我想将其更改为GMT+2。 我尝试如下。alter database governance set timezone = 'GMT+2'; 但它没有起作用。 我该怎么处理呢? postgresql版本为9.5。 并且运行在Docker上。 谢谢!

23得票1回答
如何在PostgreSQL 9.5中执行INSERT INTO SELECT和ON DUPLICATE UPDATE操作?

我正试图在PostgreSQL中完成以下操作。INSERT INTO blog_sums ( blog_id, date, total_comments) SELECT blog_id, '2016-09-22', count(comment_id) as total_comments...