问题标签 [postgres-9.6]

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

postgresql - 双 Postgres 实例 config_file 问题

我有一个服务器,它有一个我正在使用的 postgres 9.4 实例。我安装了另一个版本的 postgres (9.6),但遇到了一个问题。

为了初始化新的数据库,我跑了

sudo -u postgres /usr/pgsql-9.6/bin/initdb -D /var/lib/pgsql/9.6/data/

但是当我检查 sql 时,我得到以下信息。

我可以看到它正在使用我的 9.4,但我不确定如何纠正这个问题,也没有设法找到任何指示如何这样做的资源。

任何帮助,将不胜感激。

0 投票
0 回答
56 浏览

postgresql - 为什么通过 Postgres file_fdw 从二进制文件查询比文本文件使用更多的主内存空间?

我正在使用 Postgres 文件数据包装器(file_fdw)从远程文件执行查询。有趣的是,我看到如果 Postgres 对二进制文件执行查询,它使用的主内存空间比文本文件(如 .csv)多。谁能确认为什么会这样?有没有办法优化这个?

我的文件包含两列(id | geometry),这里几何表示多边形。所以,我的外表由两列组成。我已经在 CSV 文件和 Postgres 兼容的二进制文件上使用 ST_Overlaps() 和 ST_Contains() 等连接查询进行了测试。

SELECT COUNT(*) FROM ftable1 a, ftable2 b WHERE ST_Overlaps(a.geom, b.geom);

我使用htop检查了 PostgreSQL 的内存使用情况,我看到如果 Postgres 对二进制文件执行查询,它使用的主内存空间比 CSV 文件多。例如,如果 CSV 为 500MB,那么二进制文件几乎为 1GB。为什么?

0 投票
1 回答
126 浏览

postgresql - Postgres中的默认值和设置默认值有什么区别?

我是 Postgres 的新手,我正在尝试在 Postgres 中使用以下查询:

alter table tablename add column col1 enum('r', 'g', 'b') not null set default 'r';

它给了我一个错误。当我将其更改为default而不是 时set default,它工作正常。

只是想知道可能是什么原因!

0 投票
4 回答
12323 浏览

postgresql - psql:符号查找错误:psql:未定义符号:PQsetErrorContextVisibility

我将我的 postgres 版本从 9.2.24 切换到 9.6,因为我需要 jsonb 兼容性以及其他最近的功能。我在centos 7上运行一个虚拟机。

我决定擦除所有现有的 postgres 实例(因为它正在暂存,它们几乎是空的),然后安装了 9.6。但是,一旦我进入 postgres shell,我在输入时收到以下错误psql

psql: symbol lookup error: psql: undefined symbol: PQsetErrorContextVisibility

我假设我需要更改 psql 正在寻找的路径,以便它正确连接,但我不确定指向它的位置。

注意:ls在 postgres bash 中显示 2 个目录和 1 个文件9.6 data and initdb.log

0 投票
0 回答
187 浏览

sql - postgres SQL 使用返回值来更新另一个表

抱歉,如果这是重复的(和/或微不足道的) - 由于一般不熟悉 SQL,我无法很好地搜索。

用简单的英语我想做什么:

我有一个表table1,其中matched_id列的一部分是NULL. 对于这些行,我希望在table2使用值val1val2从行中创建table1一行,然后返回id新创建的行的 s以table2更新.matched_idtable1

到目前为止,我的查询尝试table2为我需要的条目创建了新行,但是matched_id行的值table1都设置为相同的值(我相信的第一次插入的值),而不是它们对应的行table2

0 投票
0 回答
2513 浏览

arrays - 从 JSONB 插入 uuid 会导致 `error: invalid input syntax for uuid: `

我正在尝试将 jsonb 数组中的一系列值插入到 postgres 中。但是,我得到了错误error: invalid input syntax for uuid:

我的数据看起来像这样

我的功能的相关部分如下。@codes 是传递给函数的参数。

即使铸造似乎也不能解决问题。

如果我不投,我会收到此错误error: column "column_name" is of type uuid but expression is of type text

0 投票
1 回答
1216 浏览

sql - 优化 Postgres 表中的存储空间、查询速度、JSON 列数据

考虑下表,该表记录了属于不同类别的不同公司的不同产品的价格变化。

要明确的列值将是:

category_id- 一个单独的表将 id(唯一的 bigint 值)映射到类别名称 - 100 个类别

(电子、时尚、健康、运动、玩具、书籍)

industry_id- 一个单独的表将 id(唯一的 bigint 值)映射到行业名称 - 一个类别中的数千个行业

(诺基亚、苹果、微软、PeterEngland、Rubik、Nivia、中远)

product_id- 一个单独的表格将 id(唯一的 bigint 值)映射到产品名称 - 一个行业中的数百万种产品

time(unix time as bigint) - 价格被修改的时间,

price- 数千个不同的值 - (200, 10000, 14999, 30599, 450)

product_info- 包含产品额外详细信息的 json(键/值对的数量可能会有所不同)

以多种方式查询该表以分析产品价格在一天/周/月作为小时/天/周/月范围内变化的趋势,作为图表。趋势可能基于否。的产品,正在修改的独特产品。

例如谷歌样本趋势

按原样(as string)存储 JSON 会占用更多存储空间。因此,我尝试在 json 中存储键值,并在单独的表中使用递增的序列 ID,并使用这些 ID。

喜欢

{seller:"ABC Assured", discount:10, model:XYZ, EMIoption:true, EMIvalue:12, festival_offer:28, market_stat:comingsoon, curreny: rupees}

变成

{"1":1, "2":2", "3":3, "4":4, "5":5, "6":6, "7":7, "25":107}


{seller:"Prime seller", discount:10, model:XYZ, EMIoption:true, EMIvalue:12, festival_offer:28, market_stat:comingsoon, curreny: "canadian dollars"}

变成

{"1":110, "2":2", "3":3, "4":4, "5":5, "6":6, "7":7, "25":109}


对于大约 20M 的数据集,它减少了大约 1.5GB。

增加键值基数,增加序列号。所以我尝试将十进制存储为十六进制。

{"1":1, "2":2", "3":3, "4":4, "5":5, "6":6, "7":7, "25":107}

变成

{"1":1, "2":2", "3":3, "4":4, "5":5, "6":6, "7":7, "19":"6B"}


{"1":110, "2":2", "3":106, "4":4, "5":5, "6":6, "7":7, "25":109}

变成

{"1":, "2":2", "3":"6A", "4":4, "5":5, "6":6, "7":7, "19":"6D"}


将这些十进制整数存储为十六进制整数也是如此。

  1. 进一步节省存储空间?(因为在视觉上它似乎被压缩了)
  2. JSON是保留key-value的数据类型,还是存储为字符串?
  3. 使数据压缩?
  4. 提高读取性能?
  5. 或者无论如何它可以改进?(索引,或任何?)

在普通的 psql 应用程序中,查询需要几分钟才能完成。由于它符合时间序列数据,我们使用 TimescaleDB 扩展,它的分片机制提高了查询执行,但我们需要亚秒级的结果。

查询样本: 每天检查给定类别中的所有产品的价格更改为 500 的次数,按月分组。

检查在过去 10 个月中按月分组的给定类别中的所有产品的价格更改为 (100,200,300,400,500,600,700,800,900,1000) 中的任何一个的次数。

在给定的类别中选择在给定时间范围内价格已更改的产品详细信息

在给定类别中选择价格在给定时间范围内发生变化的行业和产品 ID 详细信息

选择产品价格变化详情,在折扣 10% 的时间范围内,在特定类别中

选择产品价格变化详情,在特定卖家销售的时间范围内,在特定类别中

在大多数情况下,查询不会包含category_id在选择列中。

0 投票
1 回答
7407 浏览

ubuntu-16.04 - 在 Ubuntu 16.04 上正确启动和停止 pgAdmin4

我正在开展一个项目,该项目涉及创建用于询问 Zabbix 的仪表板(SpringBoot + angular.js webapp)。为了测试的目的,我安装了 Ubuntu 16.04 LTS (VirtualBox)、PostgreSQL 9.6,在其中我通过命令行导入了客户制作的数据库转储 (pg_dump),还安装了 GUI pgAdmin4 并将其连接到我恢复的数据库。

现在我以这种方式安装了 pgAdmin4:

作为根:

启动后

我看到以下输出:

现在,如果我在上面的地址启动 Firefox,我会看到 GUI,并且我已经导入了我的 postgres db

问题是:

1)如何正确停止服务?我的意思是 pgAdmin GUI 不是 postgres DBMS

2)要重新开始,我做了这个程序:

这是对的吗??

3)有时,在一段时间不活动后,ubuntu 冻结,无法活动,我只能通过 virtualbox 菜单关闭机器。你知道为什么吗?

你能帮助我吗??

非常感谢

0 投票
1 回答
113 浏览

postgresql - Postgres 光标目标

对于创建 pg9.6 结构以保存来自多个连接表的多行作为游标目标的最佳实践,我将不胜感激。文档对此并不清楚,其他搜索似乎表明使用临时表,如下所示。

0 投票
0 回答
452 浏览

postgresql - 查询中的 PostgreSQL 稳定函数

我有一些由几个表组成的数据模型,我需要过滤它们。

它是两个函数funcFastfuncListfuncFast可以快速返回结果是表是否需要过滤funcListfuncList返回允许的 ID 列表。我将函数标记为 STABLE,但它们的运行速度没有我预期的那么快:)

我创建了几个示例函数:

和测试。

案例 1. 仅按快速功能工作正常过滤:

查询计划为:

案例 2. 仅按慢功能过滤也可以:

查询计划为:

案例 3。但是结合了两个函数,我希望最好的情况应该接近 [案例 1],最坏的情况应该接近 [案例 2],但是:

查询计划为:

我在这里缺少什么?为什么使用两个一起查询的函数运行时间更长,如何解决?