问题标签 [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.
database - POSTGRES - 插入外表
我在外部服务器中创建了一个表
现在我想插入 external_table,但是如果我运行这个查询
它返回此错误
如何将记录添加到外部表中?
我试过以下插入
它有效,但我不能将 INSERT INTO 与 SELECT 语句一起使用。
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 容器设置内存预留和内存限制,但没有效果。
java - 从本地我可以使用 psql 命令通过终端访问,但无法通过 JAVA 代码连接
我尝试通过 JAVA 代码连接远程 postgresql,但出现此错误
org.postgresql.util.PSQLException:连接被拒绝。检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接。在
但我可以通过外部终端访问远程 postgres 数据库。请在下面的代码中帮助我。
我已在 postgres conf 和 pg_hba 文件中进行了所有必要的更改。
postgresql - 如何在已分区的表上创建索引?
如何在 PostgreSQL 11.2 中的分区表上创建索引?
我的桌子是:
如您所见testtable_unique_pkey
,是我的索引。
但是当我运行时:
我看不到我的索引。
我检查了对我的查询的解释分析,该查询也没有使用索引。
postgresql - 按日期范围分区 PostgreSQL 扫描所有分区
我有一个每月分区的表(时间戳列)。
查询数据时,explain 显示当我使用日期函数构建日期时正在查询所有分区,而当我使用硬编码日期时,仅扫描目标分区。
所以当这样查询时:
它只扫描 1 个分区(1 个月,很好!),但为了使其更具动态性,我传递了类似这样的内容(简化)
上述日期方法的日期与第一个查询完全相同,但 EXPLAIN 显示所有分区都已扫描。
如何让它发挥作用?
编辑:添加表定义并解释
应@a_horse_with_no_name 的要求,我添加了实际表格并进行了解释。这样做后,我想出了更多的东西:动态日期在加入时不起作用。因此,在下面的查询中省略“用户”表可以使动态日期起作用。
查询:
sql - 创建“子记录”类型保留列名称的最优雅方法
所以我在玩 Postgres' composite types
,但我无法弄清楚一件事。假设我想使用某个表的列的子集,或者混合查询中使用的几个不同表的不同列,并从中创建一个记录类型。
从逻辑上讲, simple(c.id, c.name)
应该可以工作,但似乎列名实际上丢失了 - 无法通过name
and来寻址记录的字段id
,例如,to_json
在从该记录创建 json 时,函数不能使用字段名。(select c.id, c.name)
可以预见,使用子查询会因subquery must return only one column
错误而失败。
当然,我可以使用横向连接或公用表表达式来创建这种子类型,但我在想——如果有更优雅的方式吗?
参见表db<>fiddle demo
示例和测试查询
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
postgresql - 为什么不能更新设置更改数据类型 Postgres
我有一个 CSV,其中包含存储为字符串的数字示例:加载时 1,200 存储为VARCHAR
我想将这些存储为整数。因此测试了以下内容;
这将运行并,
从数字中删除,但不会更改字符类型。然后我尝试了;
这引发了语法错误。此时我切换到下面的工作,但我不明白为什么我不能设置数据类型和更新
sql - Postgresql EXCLUDE 约束在 INSERT 时未触发 ON CONFLICT
我已经定义了这个表:
但是当我执行这个 SQL 时:
我期待该ON CONFLICT
子句被执行,因为要插入一些具有相同的行item_id
,sale_price
并且valid_time
与现有行相邻。相反,我得到了这个:
我误解了什么吗?我相信第二EXCLUDE
个子句中的排除约束涉及相同的 3 列。我正在搜索文档,但ON CONFLICT
说明对我来说不是那么清楚。