问题标签 [postgresql-11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1777 浏览

database - POSTGRES - 插入外表

我在外部服务器中创建了一个表

现在我想插入 external_table,但是如果我运行这个查询

它返回此错误

如何将记录添加到外部表中?

我试过以下插入

它有效,但我不能将 INSERT INTO 与 SELECT 语句一起使用。

0 投票
1 回答
2307 浏览

postgresql - 即使有大量数据,Timescaledb 内存消耗仍然非常低

我有一个 timescaledb 设置,我定期转储数据(每 10 分钟左右)。它是使用 docker-compose 部署的。

数据由 entity_id 和测量值以及其他一些内容(例如区域等)组成。

一个典型的查询是get per day minimum for last 30 days for an entity_id

  • 服务器有 8GB 的​​ RAM。
  • 块间​​隔设置为 1 天。
  • 每个块的大小约为 4.5GB

    /li>

数据库目前有大约 24 个块(24 天的数据)。

我一直在做一些基准测试和负载测试wrk,发现大量查询需要几秒钟才能完成。我看到的问题是 timescaledb 的 ram 使用量保持在 50MB 左右。并在运行上述查询的负载测试期间达到约 100MB,而 CPU 使用率和磁盘 IO 显着上升。

我的期望是大约一大块(最近的)数据将在 RAM 中。即使该假设是错误的,当发出 30 天查询时,内存使用量也不会增加。

我想了解这是预期行为还是设置存在问题。

我尝试为 docker 容器设置内存预留和内存限制,但没有效果。

0 投票
0 回答
52 浏览

java - 从本地我可以使用 psql 命令通过终端访问,但无法通过 JAVA 代码连接

我尝试通过 JAVA 代码连接远程 postgresql,但出现此错误

org.postgresql.util.PSQLException:连接被拒绝。检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接。在

但我可以通过外部终端访问远程 postgres 数据库。请在下面的代码中帮助我。

我已在 postgres conf 和 pg_hba 文件中进行了所有必要的更改。

0 投票
1 回答
7104 浏览

postgresql - 如何在已分区的表上创建索引?

如何在 PostgreSQL 11.2 中的分区表上创建索引?

我的桌子是:

如您所见testtable_unique_pkey,是我的索引。

但是当我运行时:

我看不到我的索引。

我检查了对我的查询的解释分析,该查询也没有使用索引。

0 投票
1 回答
14037 浏览

postgresql - 按日期范围分区 PostgreSQL 扫描所有分区

我有一个每月分区的表(时间戳列)。

查询数据时,explain 显示当我使用日期函数构建日期时正在查询所有分区,而当我使用硬编码日期时,仅扫描目标分区。

所以当这样查询时:

它只扫描 1 个分区(1 个月,很好!),但为了使其更具动态性,我传递了类似这样的内容(简化)

上述日期方法的日期与第一个查询完全相同,但 EXPLAIN 显示所有分区都已扫描。

如何让它发挥作用?

编辑:添加表定义并解释

应@a_horse_with_no_name 的要求,我添加了实际表格并进行了解释。这样做后,我想出了更多的东西:动态日期在加入时不起作用。因此,在下面的查询中省略“用户”表可以使动态日期起作用。

查询:

解释(分析,缓冲)

0 投票
0 回答
108 浏览

sql - 创建“子记录”类型保留列名称的最优雅方法

所以我在玩 Postgres' composite types,但我无法弄清楚一件事。假设我想使用某个表的列的子集,或者混合查询中使用的几个不同表的不同列,并从中创建一个记录类型。

从逻辑上讲, simple(c.id, c.name)应该可以工作,但似乎列名实际上丢失了 - 无法通过nameand来寻址记录的字段id,例如,to_json在从该记录创建 json 时,函数不能使用字段名。(select c.id, c.name)可以预见,使用子查询会因subquery must return only one column错误而失败。

当然,我可以使用横向连接或公用表表达式来创建这种子类型,但我在想——如果有更优雅的方式吗?

参见表db<>fiddle demo示例和测试查询

0 投票
1 回答
1675 浏览

node.js - Knex 实例无法连接到 PostgreSQL 数据库:未处理的拒绝错误:角色“19016”不存在

我能够在“knex-pracice”(我的 postgreql db)与 KNEX 之间建立连接,但是当我尝试使用我的 knex 实例进行查询时,我收到错误消息:“未处理的连接错误:角色“19016”确实不存在”。19016 是我的 WINDOWS 10 系统用户帐户的名称。我试图弄清楚为什么它使用“19016”而不是指定的用户“dunder-mifflin”。我对 postgres 和 knex 都是新手,所以如果我的描述有点混乱或者我似乎完全误解了我的问题,请原谅我。

此外,我试图通过在数据库上创建一个名为“19016”的用户来“破解”我的问题并尝试以这种方式连接,但它只是给了我另一个错误:“未处理的连接错误:数据库“19016”不存在“。对于如何让它使用用户名“dunder-mifflin”连接到 postgresql 完全感到困惑,但是我可以通过我的 powershell 连接并查询数据库,没有任何问题......

.env

练习.js

包.json

0 投票
1 回答
111 浏览

postgresql - 为什么不能更新设置更改数据类型 Postgres

我有一个 CSV,其中包含存储为字符串的数字示例:加载时 1,200 存储为VARCHAR

我想将这些存储为整数。因此测试了以下内容;

这将运行并,从数字中删除,但不会更改字符类型。然后我尝试了;

这引发了语法错误。此时我切换到下面的工作,但我不明白为什么我不能设置数据类型和更新

0 投票
1 回答
2268 浏览

sql - Postgresql EXCLUDE 约束在 INSERT 时未触发 ON CONFLICT

我已经定义了这个表:

但是当我执行这个 SQL 时:

我期待该ON CONFLICT子句被执行,因为要插入一些具有相同的行item_idsale_price并且valid_time与现有行相邻。相反,我得到了这个:

我误解了什么吗?我相信第二EXCLUDE个子句中的排除约束涉及相同的 3 列。我正在搜索文档,但ON CONFLICT说明对我来说不是那么清楚。

0 投票
1 回答
1073 浏览

postgresql - 使用 date_trunc 创建 Postgresql 索引

涉及到这个问题。我想创建一个返回与此查询相同的输出的索引;

下面将索引但返回时间戳添加到日期,这不是我想要的。

是否可以创建一个索引,以该格式返回没有时间戳的日期