小编Lau*_*lbe的帖子

PostgreSQL 上浮点数的模运算

我希望在 PostgreSQL 中执行两个浮点整数之间的模运算。具体来说,我希望强制执行角度算术,例如在一些数学运算之后强制角度位于区间 [0,2*pi] 内。

我可以看到fmodSQL 中并未正式支持此类。有什么合理的解决办法吗?

postgresql floating-point modulo

2
推荐指数
1
解决办法
2472
查看次数

如何按PostgreSQL中的非独特/非唯一值对排序进行分页?

如何通过对可能具有重复值的列进行排序来正确分页?我有一个名为 的表posts,其中有一列保存某个帖子的点赞数,名为num_likes,我想按 排序num_likes DESC。但是下图显示了我遇到的一个问题 - 在两个页面之间插入的新行会导致获取重复的数据。

这个链接在这里解释了这个问题,并给出了keyset pagination的解决方案,但从我所看到的,只有当行被排序的列是distinct / unique时才有效。如果不是这种情况,我该怎么做?

新行问题分页

postgresql pagination

2
推荐指数
1
解决办法
586
查看次数

SQL查询映射表直接转换为JSON

我有一个 PostgreSQL 映射表,它保存公司员工 - 团队领导和团队成员之间的关系。调用的表leaders看起来就像这样:

leader_id | employee_id
    1     |      15
    1     |      21
    1     |      26
    2     |      76
    2     |      41
Run Code Online (Sandbox Code Playgroud)

两列都是表的外键,person该表保存诸如namedob等信息。

目标是创建包含数据的 JSON,如下所示:

{
  1: {name: "John Doe",
      person_id: 1,
      employees: {
        15: {name: "Oliver Queen",
            person_id: 15
        },
        21: {name: "Barry Alan",
            person_id: 21
        },
        26: {name: "Solomon Rondon",
            person_id: 26
        },
      }
  },
  2: {name: "Papi Hans",
      person_id: 2,
      employees: {
        76: {name: "Ashley Young",
            person_id: 76 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql json

2
推荐指数
1
解决办法
1951
查看次数

当 . 主目录中的 pgpass 不是一个选项?

我正在运行一个 cron 作业,使用以下命令创建数据库转储pg_dump,如下所示:

export PGPASSWORD="XXXXXXXX"; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
Run Code Online (Sandbox Code Playgroud)

但是当我运行此命令时,出现密码身份验证错误:

pg_dump: [archiver (db)] connection to database "my_db" failed: FATAL:  password authentication failed for user "my_user"
FATAL:  password authentication failed for user "my_user"
Run Code Online (Sandbox Code Playgroud)

我无法将.pgpass文件放置在运行 cron 的用户下,但我可以将其放置在其他位置并指定如下PGPASSFILE

export PGPASSFILE=/path/to/.pgpass; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
Run Code Online (Sandbox Code Playgroud)

但这再次返回相同的身份验证错误。我已经确认这不是密码错误的问题,因为当我使用交互式提示时它有效:

pg_dump --password -h localhost -U my_user my_db > /tmp/db_dump.sql
Password: XXXXXXXX
Run Code Online (Sandbox Code Playgroud)

当我查看文档时,它看起来像是PGPASSWORD环境PGPASSFILE变量中缺少的(也许它们已被删除?)https://www.postgresql.org/docs/10/app-pgdump.html

如果我无法.pgpass在运行脚本的用户的主目录中创建文件,我还能如何运行pg_dump command?

对于上下文,我运行的是pg_dump …

authentication postgresql pg-dump

2
推荐指数
1
解决办法
2万
查看次数

将 pg_stat_statements 永久保留在生产服务器上好吗?

我对 Postgresql 相当陌生(来自 SQL Server)

我偶然发现了那个包裹,它看起来很有趣。

将其永久保留在生产服务器上是一个好的做法吗?

一方面,我想知道在生产中实际加载我的系统的是什么。另一方面,我不想通过监视来加载我的服务器......

postgresql monitoring

2
推荐指数
1
解决办法
663
查看次数

错误:文本搜索配置不存在

我正在尝试运行 SQL 查询,但它以ERROR: text search configuration does not exist.

如何添加自定义语言文本搜索选项?

ERROR: text search configuration "czech" does not exist
LINE 88: ts_headline('czech', title, plainto_tsquery('czech', $1)...
Run Code Online (Sandbox Code Playgroud)

postgresql full-text-search

2
推荐指数
1
解决办法
414
查看次数

如何优化 PostgreSQL 的多列搜索

我在 PostgreSQL 中有一个表,它有 20 列,其中大部分是枚举类型。这个表有数百万行。

我想支持并加速搜索具有多个字段的行的查询,例如:col2=value1&col3=value2&col5=value3 page=1

我无法使用 PostgreSQL 的复合索引,因为它只适用于固定的列顺序。例如,如果我在 上建立索引(col2,col3,col5),那么它不能用于搜索col1=value1&col2=value2

我还想支持以下查询:

col1=value1&col2=(value3 or value4) orderby=col3 page=1

解决这个问题的方法是什么?如果我不需要对这些列中的任何列进行全文搜索(因为它们都是枚举类型),那么解决方案可以是轻量级的吗?

postgresql database-indexes

2
推荐指数
1
解决办法
2098
查看次数

如果一个进程建立了多个 PostgreSQL 连接并在没有关闭它们的情况下终止,会发生什么?

我正在为购买的软件编写 DLL。

该软件将对某些任务执行多线程计算。

我的工作是将相对结果输出到数据库中。

但由于软件支持有限,数据的多线程输出有点困难。

关键问题是没有有关 DLL 函数上次执行的信息。

因此,数据库连接不会被关闭。

请问如果我保持连接打开并终止进程,会出现什么潜在问题?

我的平台是winserver 2008,PostgreSQL 10。

windows postgresql database-connection libpq

2
推荐指数
1
解决办法
839
查看次数

你可以使用paonictl 更改pg_hba.conf 吗?

如果您想pg_hba.conf在现有patroni集群中进行更改。可以通过patronictl还是必须一一发信号?

粗略一看代码好像没有

postgresql patroni

2
推荐指数
1
解决办法
9074
查看次数

PostgreSQL DROP TABLE 查询冻结

我正在编写代码以在 Anaconda 的 Spyder 环境中用 Python 创建 GUI。在这段代码中,我使用了 PostgreSQL 数据库,因此我使用了 psycopg2 数据库适配器,以便我可以直接从 GUI 进行交互。

代码太长,无法在此处发布,因为它超过 3000 行,但总而言之,我与数据库交互没有问题,除非我尝试删除表。

当我这样做时,GUI 框架变得无响应,drop table查询不会删除预期的表,也不会抛出任何错误或任何其他类型的内容。

在我的代码中,所有导致表被删除的操作都通过函数 ( DeleteTable)进行处理。当我调用这个函数时,没有问题,因为我之前插入了几个打印语句,确认一切正常。当我用cur.execute(sql)代码行执行语句时会出现问题。

有人能弄清楚为什么我的桌子不会掉吗?

def DeleteTable(table_name):

    conn=psycopg2.connect("host='localhost' dbname='trial2' user='postgres'   password='postgres'")
    cur=conn.cursor()
    sql="""DROP TABLE """+table_name+""";"""
    cur.execute(sql)
    conn.commit()
Run Code Online (Sandbox Code Playgroud)

python postgresql wxpython psycopg2

2
推荐指数
1
解决办法
2908
查看次数