标签: postgresql

监控流复制

我们正在设置一个主站和一个(只读)从站的流式复制。我们现在正在寻找一种方法来监控复制;主要是为了验证从服务器是否仍然是最新的。

是否有可能做到这一点——最好是从奴隶?如果是这样,如何?

关于流式复制文档提到了以下内容:

在支持 keepalive 套接字选项的系统上,设置tcp_keepalives_idletcp_keepalives_intervaltcp_keepalives_count有助于主节点及时发现连接断开。

在这种情况下,“及时通知”是什么意思?是否有一些错误日志报告连接断开?

postgresql replication monitoring

3
推荐指数
1
解决办法
1521
查看次数

在本地机器上创建 pgAdmin 数据库

我正在尝试使用 pgAdmin 在我的本地机器上创建数据库。当我尝试使用下面的“新服务器注册”条目连接到新服务器时,它给了我“服务器不听”错误(下图)。 登录尝试 错误信息 我曾在我以前的机器上尝试过相同的程序,并且没有任何问题。任何想法都会非常有帮助。我尝试了一些不同的组合,但没有任何效果。在此先感谢您的帮助。

postgresql pgadmin

3
推荐指数
1
解决办法
2万
查看次数

选择行并添加它们之前的行

我有一个表结构,用于保存另一个表的历史数据。就像是

id      | name        | date
----------------------------------------
1       | John        | 2016-01-01 14:38.123123
1       | John Smith  | 2016-01-03 16:46.123123
2       | ...         | 2016-01-01 14:38.123123
3       | ...         | 2016-01-01 14:38.123123
Run Code Online (Sandbox Code Playgroud)

我想做一个查询来获取每一行,并且对于每一行,还获取具有相同 ID 的前一行(行日期之前的最新日期),例如类似

SELECT id, name, date, previous.id, previous.name, previous.date
FROM ..?
Run Code Online (Sandbox Code Playgroud)

这可能吗?这是一个非常普遍的问题,但在我的特定情况下,我使用的是 PostgreSQL,所以如果有一些 postgres 功能可以实现这一点,那很好。

postgresql

3
推荐指数
1
解决办法
3147
查看次数

要求 JSON 有一个元素

使用json数据类型时,有没有办法确保输入 JSON 必须有一个元素?

我的意思不是主要的,我希望插入的 JSON 至少具有id , name元素。它可以有更多,但至少这两个必须在那里。这能做到吗?

postgresql psql json

3
推荐指数
1
解决办法
40
查看次数

为什么我的递归 CTE 中缺少某些行?

这些是我的 2 个表id_hierarchyhierarchy_link

CREATE TABLE id_hierarchy
(
    id integer NOT NULL,
    hierarchy integer
);
insert into id_hierarchy values (11,2),(22,3),(44,5),(77,8),(170,11),
(190,13),(240,18),(255,20);

CREATE TABLE hierarchy_link
(
    hid integer NOT NULL,
    parent_hid integer
);
insert into hierarchy_link values (1,0),(2,1),(3,2),(5,3),(8,5),(11,8),
(13,11),(15,13),(18,15),(20,18);
Run Code Online (Sandbox Code Playgroud)

id_hierarchy.hierarchy=hierarchy_link.hid

对于以下 CTE 查询:

with recursive rt1 as(
    select id,hid,parent_hid||'->'||hid as str 
    from rt2 
    where rt2.parent_hid=1
    union
    select t.id,t.hid,s.str||'->'||t.hid as str 
    from rt2 t 
    inner join rt1 s on (s.hid=t.parent_hid)
),
rt2 as (
    select id, …
Run Code Online (Sandbox Code Playgroud)

postgresql cte

3
推荐指数
1
解决办法
270
查看次数

如何在 PostgreSQL 上查找表/索引所在的表空间?

如何使用 PostgreSQL (9.3) 找出表(或索引)所在的表空间?

postgresql tablespaces postgresql-9.3

3
推荐指数
1
解决办法
1万
查看次数

SQL - 查找作为我的字符串前缀的记录

我有一个名为prefix存储“aaaa”的列的表。我的应用程序有一个很长的字符串,例如。'aaaabbbbccccdddd'。我想选择特定列是“aaaabbbbccccdddd”前缀的所有行。前缀的长度是可变的。

我怎样才能在 Postgres 中做到这一点?

我试过

SELECT * FROM my_table WHERE '%' || prefix || '%' ILIKE 'aaaabbbbccccdddd'
Run Code Online (Sandbox Code Playgroud)

但它不匹配。

postgresql

3
推荐指数
2
解决办法
6750
查看次数

Postgres 中的 IPv6 子网划分

我使用的是 postgres 9.5,我想知道 postgres 是否允许对 IP 地址进行任何类型的子网划分或计算,特别是 IPv6。我知道他们有存储数据的cidr格式,如 IpV4 和 Ipv6 格式。但是,我可以做任何事情,例如找出存储在数据库中的子网中有多少个客户端 IP?

例如。如果我存储了 的 IPv6 地址2001:dd8::/64,我能否找出有多少主机 IP(根据某些计算器,为 18446744073709551616)。

我的猜测是答案是否定的,postgres 不支持这一点。

postgresql

3
推荐指数
1
解决办法
489
查看次数

使用大量数据更改 postgresql 表

我的数据库中有一个表,其中有几个简单的列和一个二进制列。该表的主键是一个integer类型。

我面临的问题是自动递增的主键列已达到其最大限制 +2147483647。意味着该表中有大约 20 亿条记录。由于该表中的二进制列,它255 GB在磁盘上有大约大小。

现在,由于该数据类型限制,对该表的所有插入都已停止。逻辑解决方案是我们将该主键列转换为bigint. 但是由于ALTER TABLE命令的大小总是失败,有时甚至数据库进入不一致的状态,我们根本无法访问该表。

使用的语句:

ALTER TABLE table_name ALTER COLUMN id SET DATA TYPE bigint ;
Run Code Online (Sandbox Code Playgroud)

任何人都有任何建议来解决这个问题。

postgresql postgresql-9.1

3
推荐指数
1
解决办法
1475
查看次数

比较 ID,如果为真则更新另一个表

我有3张桌子。1 表(表 A)有某种疾病(例如心脏病)的患者,另一个表是有各种疾病的患者(表 B)。第三个表是结果表。

我想要做的是将表 A 中的心脏病患者(表 A 仅是心脏病患者)与表 B 中的肾脏疾病患者进行比较。如果表 B 中存在命中(返回结果),则更新结果表该 ID 列肾脏疾病下的“x”。

结果表目前采用以下格式:

ID|肾脏|CHD|糖尿病……还有另外10种疾病

总结:我们用指定的疾病名称检查表 A 与表 B,如果有返回结果patientid,则结果表更新为该特定疾病名称下的“x” patientID。然后我将重新运行查询更改疾病名称(例如从肾脏到癌症)以查明心脏病患者是否患有癌症?

样本数据

表A

病人编号
1
2
3
4
5
....一路到812(812心脏病患者)

表B

患者 ID|年龄|疾病 1|疾病 2|疾病 3...一直到疾病 10
1 50 肾肺
2 35 肾心糖尿病
3 94 癌性肺炎 CHD

想要发生的是,对于PatientID表 A 中的每个,我们将表 B 中疾病 1-10 的特定疾病(例如肾脏)与表 B 进行比较,如果有结果,我们然后用'更新结果表x' 在结果表中该特定疾病列下。因此,在我们的示例中,对于患者 1 和 2,肾脏下方应该有一个“x”。

使用我们的样本数据,当我们运行肾脏时,结果表应该如下所示:

ID|肾脏|冠心病|糖尿病
 1 次
 2 x

谁能指出我为此编写查询的方向?该查询patientID从表 A 中检查所有(其中 812 个)表 B …

postgresql database-design

3
推荐指数
1
解决办法
189
查看次数