问题标签 [psql]

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 回答
3248 浏览

postgresql - 如何引用传递给 psql 的命名参数?

psql有一个用于传递命名参数的结构:

然后可以在脚本中引用它:

这将给出结果

在开发过程中,我需要相当频繁地删除和重新创建数据库的副本,因此我正在尝试自动化该过程。所以我需要运行一个查询,强制断开所有用户,然后删除数据库。但是这个操作的数据库会有所不同,所以数据库名称需要是一个参数。

问题是断开用户连接的查询需要一个字符串 ( WHERE pg_stat_activity.datname = 'dbname'),而丢弃的查询需要一个不带引号的令牌 ( DROP DATABASE IF EXISTS dbname)。(对不起。不知道该怎么称呼这种令牌。)

我可以在 DROP 查询中使用不带引号的命名参数,但是在断开连接查询中引用命名参数会导致参数不被扩展。即,我会得到 string':name'而不是 string 'value'

有没有办法将未引用的值转换为字符串或将字符串转换为 DROP 查询的未引用标记?我可以通过将断开连接和 DROP 查询放在单独的脚本中并将带引号的参数传递给断开连接和不带引号的 DROP 来解决它,但我更希望它们在同一个脚本中,因为它们实际上是两个步骤在一个过程中。

0 投票
1 回答
2303 浏览

sql - PL/pgSQL 函数 + 客户端 lo_import

我在将文档导入 postgres db 时遇到问题。我有 plpgsql 函数,更简单的版本可能如下所示:

和 psql 命令:

两个代码在一个文件中。我不能将 lo_import() 放入插入语句,因为我需要客户端 lo_import。有变量 LASTOID,但在 add_file 函数中不可用。并且它不会在每次调用 add_file() 时更新。
那么,在我们的示例中,如何通过 insert 语句将 oid 放入数据库,并在函数中使用参数?文件在客户端计算机中。

0 投票
7 回答
25348 浏览

postgresql - 安装了 Postgres.app 但它不起作用

我刚刚在我的 Mac 上安装了Postgres.app,但它无法正常工作。我完成了安装,应用程序图标在菜单栏上,它说它正在侦听端口 5432,但是,如果我尝试从命令行运行它会发生这种情况:

我之前通过 Homebrew 安装了 PostgreSQL,但在安装 Postgres.app 之前将其删除。我正在运行 Mac OS X Lion。

感谢您的帮助,我真的很想让 PostgreSQL 在我的机器上运行。

0 投票
1 回答
199 浏览

qt4 - 如何在 qt 中的 QTableview 中动态(而不是手动)编辑表

我正在 linux 的 Qt 中创建一个 GUI 应用程序。在 Tableview 中,我创建了一个
可以保存数据库值的表。现在我想用
程序动态编辑我的表,以便表会根据程序需要自动更改。

0 投票
1 回答
599 浏览

sql - 将查询结果推入数组

我有一个 bash shell 脚本。我有一个 psql 复制命令,它从数据库中捕获了一些数据行。数据库中的数据是我将在 bash 脚本中使用的实际 sql 语句。我将语句放在数据库中,因为它们的长度不同,并且我希望能够动态调用某些语句。

1)我不确定在复制语句中使用什么分隔符。我不能使用逗号或管道,因为它们在来自数据库的数据中。我尝试了几个随机字符,因为它们不在我的数据库中,但副本很合适,只需要一个 ascii 字符。

此外,为了使事情复杂化,我需要为每一行获取 query_name 和 query_string。

这是我目前拥有的。我通过副本获得了所有数据,但现在我只想将数据推送到一个数组中,以便稍后可以循环它:

0 投票
3 回答
2952 浏览

mysql - 获取mysqldump转储适合psql输入的数据(转义单引号)

我正在尝试将数据库从 MySQL 移植到 PostgreSQL。我已经在 Postgres 中重建了模式,所以我需要做的就是获取数据,而无需重新创建表。

我可以使用迭代所有记录并一次插入一个的代码来做到这一点,但是我尝试了这一点,而且我们的数据库大小变慢了,所以我尝试使用 mysqldump 和一个管道来代替 psql(每次一次表,一旦我开始工作,我可能会并行化)。

我必须跳过各种障碍才能走到这一步,打开和关闭各种标志以获得模糊不清的转储。同样,这只会转储 INSERT INTO,因为我已经准备好空模式以将数据放入:

sed除了那个丑陋的命令之外的一切都是可以管理的。我这样做是为了尝试将 MySQL 的方法转换为在字符串 ( ) o PostgreSQL 的引用要求 ( )sed中引用单引号。它可以工作,直到转储中出现这样的字符串:...是的,我们的数据库中似乎有一些用户输入具有这种格式,这是完全有效的,但没有通过我的命令。我可以在命令中添加一个lookbehind,但我觉得我正在爬进一个兔子洞。有没有办法:'O\'Connor''O''Connor''String ending with a backslash \\'sedsed

a) 告诉 mysqldump 通过将单引号加倍来引用单引号 b) 告诉 psql 期望反斜杠被解释为引用转义?

我有另一个问题BINARYbytea差异,但我已经通过 base64 编码/解码阶段解决了这个问题。

编辑 | 看起来我可以用 (b) 做set backslash_quote = on; set standard_conforming_strings = off;,但我不确定如何将它注入管道输出的开头。

0 投票
1 回答
451 浏览

delphi - 查找 psql 命令是否对用户进行身份验证失败

使用Delphi 如何找出psql脚本已经返回

运行以下脚本时(psqlRun.bat)

上面的脚本是使用 shellexecute 运行的

返回的值超过 32(所以它运行成功)但对我来说密码验证失败.. 有没有办法通过 delphi 找到如果密码失败,脚本是否失败?由于pgpass.conf可能尚未创建,因此我无法检查文件中的用户密码。用户可能不知道密码或输入了错误的密码。

那么以编程方式如何检查身份验证是否失败?

注意:Postgresql 9.0

0 投票
2 回答
3077 浏览

postgresql - PostgreSQL 删除约束未知名称

我有一个 SQL 脚本,它需要删除几个约束并在最后恢复它们,但是约束名称是自动生成的,并且每次运行脚本时都会有所不同。

我知道如何从表名中获取约束名称,但似乎无法在 drop 语句中使用此信息。

alter table something drop constraint (some subquery)是语法错误。

理想情况下,我想获取约束名称并将其存储在变量中,但 Postgres 似乎不支持它,我无法使其与 psql 一起使用\set

这甚至可能吗?

0 投票
1 回答
1506 浏览

postgresql - 使用 psql 登录

我正在尝试从终端运行 postgres。我错过了什么?

0 投票
6 回答
239615 浏览

postgresql - psql列出所有表

我想liferay在我的 PostgreSQL 安装中列出数据库中的所有表。我怎么做?

我想SELECT * FROM applications;liferay数据库中执行。applications是我的 liferay 数据库中的一张表。这是怎么做到的?

这是我所有数据库的列表: