问题标签 [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.
postgresql - 如何将一个函数中的变量值设置为另一个函数的返回值?
我对 postgresql 非常陌生,不明白如何将一个函数中的变量值设置为另一个函数的值。据我所知:
功能A
函数 B(调用函数 A 获取值)
在Function B中,如何将 的值设置为_posttypeid
从Function A返回的值?
postgresql - 本地版本的 postgres 外部数据包装器会自动更新吗?
抱歉,如果在文档或其他明显的地方回答了这个问题,但我刚刚经历了不得不使用postgres_fdw
从另一个数据库获取数据的严谨性(与 MS SQL 的易用性完全不同!)
我运行了一条IMPORT SCHEMA
语句以将外部表/数据库数据放入我的工作数据库中。每当外部数据库中的数据更新或这IMPORT SCHEMA
是数据的副本时,此模式中的数据是否会自动更新?
postgresql - 如何在 PostgreSQL 的函数内返回动态 SELECT 的结果?
这里有一个非常相似的问题,但与这个问题不完全相同。
我有一个函数,它使用IF
语句来确定SELECT
要返回的查询类型。
CREATE FUNCTION
当我永远不知道其中的SELECT
查询可能返回的确切列时,如何声明语句应返回的内容?也就是说,我无法RETURNS TABLE
使用列列表设置声明,因为我不知道哪些列可能会返回。我所知道的是,我肯定希望返回一个结果表。
这是我的功能(未完成,伪):
我来自 MS SQL Server 背景,我不必在CREATE FUNCTION
语句中指定要返回的内容,因此这对我来说非常混乱。
postgresql - 为什么我收到“[42883] 错误:运算符不存在:未知 + 文本”响应?
我有一个非常简单的函数,它接受_posttypeid
和_url
作为参数:
如果我运行,select * from public.rewrite(_url := 'wikipedia.org')
则会收到此错误:
[42883] 错误:运算符不存在:未知 + 文本
提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
我显然是在传递文本作为_url
参数的值。我不明白错误的含义或如何修复它。
postgresql - 返回具有空值的表会导致错误
我有一个带有可选参数的简单函数。当我遗漏一个默认为 null 的参数时,我得到一个错误,即它不是整数。
这是功能:
如果我运行,SELECT * FROM utility.rewrite(_url := 'wikipedia.org')
则会收到此错误:
[42804] 错误:查询结构与函数结果类型不匹配详细信息:返回类型文本与第 1 列中的预期类型整数不匹配。
所以column1
必须是PostTypeID
我RETURNS TABLE
定义中的列。但是我选择NULL AS PostTypeID
了为什么它不只是返回NULL?
如果我运行,SELECT * FROM utility.rewrite(_postid = 0, _url := 'wikipedia.org')
那么它工作正常。但我不想0
被退回,我想要 NULL。
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 address
orPG::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 有关。
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。
postgresql - 为什么这个函数由于没有结果的目的地而不能返回一个整数?
我有一个简单的函数,需要从 select 语句中返回一个整数。就是这个:
如果我运行上述函数,我会收到以下错误:
[42601] 错误:查询没有结果数据的目的地 提示:如果要丢弃 SELECT 的结果,请改用 PERFORM。
为什么结果数据没有目的地?为什么它不只返回SELECT
语句?
postgresql - 如何插入一个空行,但正确进行串行更新?
我想在表中插入一条空白记录并serial
更新其主键值。然后我想获取新值并将其插入临时表中。这将发生在使用语言的函数中plpgsql
。
到目前为止,我有这个:
上面没有插入任何东西(我从 MySQL 答案中获取了解决方案)。它返回一个错误:
[42601] 错误:INSERT 的目标列多于表达式
删除VALUES(NULL);
部件也不能像在 SQL Server 中那样工作。因此,我怎样才能插入一个只有serial
更新的空白记录?
使用新编号生成新记录后serial
,如何将其输出回临时表?
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:更新的服务器配置