问题标签 [postgresql-13]

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 投票
0 回答
21 浏览

postgresql - 如何将一个函数中的变量值设置为另一个函数的返回值?

我对 postgresql 非常陌生,不明白如何将一个函数中的变量值设置为另一个函数的值。据我所知:

功能A

函数 B(调用函数 A 获取值)

Function B中,如何将 的值设置为_posttypeidFunction A返回的值?

0 投票
1 回答
45 浏览

postgresql - 本地版本的 postgres 外部数据包装器会自动更新吗?

抱歉,如果在文档或其他明显的地方回答了这个问题,但我刚刚经历了不得不使用postgres_fdw从另一个数据库获取数据的严谨性(与 MS SQL 的易用性完全不同!)

我运行了一条IMPORT SCHEMA语句以将外部表/数据库数据放入我的工作数据库中。每当外部数据库中的数据更新或这IMPORT SCHEMA是数据的副本时,此模式中的数据是否会自动更新?

0 投票
2 回答
104 浏览

postgresql - 如何在 PostgreSQL 的函数内返回动态 SELECT 的结果?

这里有一个非常相似的问题,但与这个问题不完全相同。

我有一个函数,它使用IF语句来确定SELECT要返回的查询类型。

CREATE FUNCTION当我永远不知道其中的SELECT查询可能返回的确切列时,如何声明语句应返回的内容?也就是说,我无法RETURNS TABLE使用列列表设置声明,因为我不知道哪些列可能会返回。我所知道的是,我肯定希望返回一个结果表。

这是我的功能(未完成,伪):

我来自 MS SQL Server 背景,我不必在CREATE FUNCTION语句中指定要返回的内容,因此这对我来说非常混乱。

0 投票
0 回答
491 浏览

postgresql - 为什么我收到“[42883] 错误:运算符不存在:未知 + 文本”响应?

我有一个非常简单的函数,它接受_posttypeid_url作为参数:

如果我运行,select * from public.rewrite(_url := 'wikipedia.org')则会收到此错误:

[42883] 错误:运算符不存在:未知 + 文本

提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。

我显然是在传递文本作为_url参数的值。我不明白错误的含义或如何修复它。

0 投票
1 回答
46 浏览

postgresql - 返回具有空值的表会导致错误

我有一个带有可选参数的简单函数。当我遗漏一个默认为 null 的参数时,我得到一个错误,即它不是整数。

这是功能:

如果我运行,SELECT * FROM utility.rewrite(_url := 'wikipedia.org')则会收到此错误:

[42804] 错误:查询结构与函数结果类型不匹配详细信息:返回类型文本与第 1 列中的预期类型整数不匹配。

所以column1必须是PostTypeIDRETURNS TABLE定义中的列。但是我选择NULL AS PostTypeID了为什么它不只是返回NULL?

如果我运行,SELECT * FROM utility.rewrite(_postid = 0, _url := 'wikipedia.org')那么它工作正常。但我不想0被退回,我想要 NULL。

0 投票
4 回答
12286 浏览

macos-big-sur - 带有 Big Sur 的基于 ARM 的 M1 Mac 上的 Postgres 错误

自从我有了新的基于 ARM 的 M1 MacBook Pro 以来,我一直遇到严重且一致的 PostgreSQL 问题 (psql 13.1)。无论我使用 Rails 服务器还是 Foreman,我都会在浏览器和终端(如PG::InternalError: ERROR: could not read block 15 in file "base/147456/148555": Bad addressorPG::Error (invalid encoding name: unicode)Error during failsafe response: PG::UnableToSend: no connection to the server. 奇怪的是,我经常可以反复刷新浏览器以使事情正常运行(直到它们不可避免地不再起作用)。

我知道与基于 ARM 的 M1 Mac 相关的所有配置挑战,这就是为什么我以多种方式多次卸载并重新安装从 Homebrew 到 Postgres 的所有内容(使用 Rosetta,不使用 Rosetta,使用arch -x86_64 brew命令,使用 Postgres 应用程序)而不是 Homebrew 安装)。我在随机留言板上遇到了其他几个人,他们遇到了同样的问题(也在新的 Mac 上)并且没有任何运气,这就是为什么我不愿意相信这是一个驱动器损坏问题。(我还多次运行磁盘实用程序急救检查;它说一切正常,但我不知道这有多可靠。)

我正在使用thoughtbot parity 将我的开发环境数据库与当前生产的数据库同步。当我运行时development restore production,我的终端中有数百行类似于下面的输出(这是在下载完成之后但在继续创建默认值、处理数据、序列集等之前)。我相信这是问题的根源,但我不确定解决方案是什么:

有没有其他人经历过这个?任何解决方案的想法将不胜感激。谢谢!

编辑:我能够在较旧的 MacBook Pro(也运行 Big Sur)上重现相同的问题,因此它似乎与 M1 无关,但可能与 Big Sur 有关。

0 投票
1 回答
750 浏览

postgresql - PostgreSQL:如何格式化查询的输出以显示“百万”而不是零?

如何使用 psql 格式化查询的输出以显示以百万为单位的值(即附加的“百万”。例如:100 万而不是 1000000)?

例子:

实际输出:

期望的输出:

关于该主题,我所能找到的只是用于将数字/日期转换为字符串的数据格式化函数,反之亦然:https://www.docs4dev.com/docs/en/postgre-sql/11.2/reference/functions-formatting。 html

此外, to_char 函数似乎没有执行这种格式:https ://www.postgresqltutorial.com/postgresql-to_char/

在 macOS 终端上使用 psql 和 PostgreSQL 版本 13。

0 投票
2 回答
23 浏览

postgresql - 为什么这个函数由于没有结果的目的地而不能返回一个整数?

我有一个简单的函数,需要从 select 语句中返回一个整数。就是这个:

如果我运行上述函数,我会收到以下错误:

[42601] 错误:查询没有结果数据的目的地 提示:如果要丢弃 SELECT 的结果,请改用 PERFORM。

为什么结果数据没有目的地?为什么它不只返回SELECT语句?

0 投票
2 回答
163 浏览

postgresql - 如何插入一个空行,但正确进行串行更新?

我想在表中插入一条空白记录并serial更新其主键值。然后我想获取新值并将其插入临时表中。这将发生在使用语言的函数中plpgsql

到目前为止,我有这个:

上面没有插入任何东西(我从 MySQL 答案中获取了解决方案)。它返回一个错误:

[42601] 错误:INSERT 的目标列多于表达式

删除VALUES(NULL);部件也不能像在 SQL Server 中那样工作。因此,我怎样才能插入一个只有serial更新的空白记录?

使用新编号生成新记录后serial,如何将其输出回临时表?

0 投票
1 回答
1304 浏览

sql - 对于 10 亿行,Postgres 查询非常慢

我的 Postgres 数据库表中有大约 10 亿行和 6 列(id、col1、col2..col5)。我有 id 作为我的 PRIMARY_KEY。我将其用作只读数据库,每次我只需要根据 10000 个 ID 列表检索/读取 10000 行。查询需要 40-60 秒才能检索 10000 行,这非常慢。以下是我的查询:

EXPLAIN ANALYZE 查询:

我想显着加快 10000 行的检索速度。我对 Postgres 相当陌生。我已阅读其他帖子并尝试了一些方法,包括将 work_mem 从 4 MB 修改为 256 MB,但没有帮助。Postgres 服务器在具有 384 GB RAM 的机器上运行。

提前感谢任何帮助。

编辑 1:解释 10 条记录的分析

编辑 2:track_io_timing = ON;解释(分析,缓冲区)

编辑 3:更新的服务器配置