问题标签 [postgresql-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 回答
99 浏览

python - 通过在 SqlAlchemy 中汇总数据来创建实体

我正在使用有关视频游戏中战斗数据的现有模式,因为我必须使用外部程序生成的数据。这个模式在技术上与我想要组织数据的方式不兼容,但它主要是有效的。

出现 3 次(到目前为止)的一个问题是为用户提供一个大数据表以浏览/搜索以开始筛选可用的数据。因此,我决定采用一种通用的方式来生成数据表,并处理 AJAX 请求以向该表提供更多数据。

问题是其中一种情况基本上是直接从表中检索数据,而另一种情况实际上是从表中检索汇总数据。例如,模式定义了“战斗者”或战斗参与者,但我希望系统公开“角色”的概念,或存在并参与许多战斗的事物。因此,aCharacter将是Combatant多个不同Encounter的 s 中的 a。

基本上有两种方法可以从数据库中创建角色的想法。我可以使用视图,也可以让我的 ORM (SQLAlchemy) 每次都从头开始创建所需的查询。在 SQLAlchemy 中可以通过一些可能的扩展来支持视图,但是因为我在总结,我丢失了主键,因此我无法创建表示视图的 ORM 类。据说,您可以强制一列成为主键,但这对我不起作用(似乎什么也没做)。如果我尝试从头开始使用查询,那么我当前生成通用表的方式将无法正常工作,因为我希望能够检查(...)查询结果。

所以,我有两个问题,还有一个用于从头开始查询的 MCVE :

  1. 我是否正在采取一种方法来解决这个已知不好的问题?

  2. 有没有办法避免使用允许我使用任意字符串从查询结果对象中获取值的 inspect(...) ?

关于 MCVE 的一些注意事项:

  • 我已经删除了 ORM 对象的数量、每个对象中的列以及列列表中的配置信息。列列表的原始形式很难看。

  • 双嵌套for循环在 MCVE 中的地方,在我的实际代码中有一个模板系统。Web 服务器,生成 HTML,所有通常的乐趣都被剥离了,专注于 SQLAlchemy。

0 投票
1 回答
1051 浏览

performance - 通过更改配置参数来调整 PostgreSQL

我有postgresql 9.6,它在 ubuntu 服务器 16.04 上运行,在 AWS 上带有122gb RAM, , 。我想知道我需要根据这些资源在文件中更改哪些参数才能获得高性能?如何强制postgresql尽可能多地加载内存中的数据?320gb SSD18 vCPUpostgresql.config

0 投票
1 回答
43 浏览

postgresql - PostgreSQL 9.6 数据库服务器宕机我需要启动 Wildfly 8.1 服务器吗

PostgreSQL 9.6 数据库服务器宕机,Widfly 正在使用连接池连接到 Postgresql 9.6 服务器。那么应该是什么顺序。1. 我应该启动 Postgresql 9.6 Server 并且一切正常吗?或者 1. 启动 Postgresql 9.6 Server 2. 重启 Wildfly Instance 让它可以连接?

0 投票
1 回答
3857 浏览

sql - 递归 PostgreSQL 函数失败并显示 «cursor already in use» 消息

我有一个递归 PL/PgSQL 函数,它使用这样的绑定参数化游标:

当函数递归调用自身时,会报错:

显然,我的光标范围不限于单个函数调用。在谷歌搜索解决方法后,我在邮件列表档案中发现了这条消息,其中提到未绑定的游标没有这个限制,即:

但是我看不到如何参数化未绑定的游标。另外,我不能使用for...loop未绑定的游标:

有人可以建议一种替代方法吗?

PS。我正在移植大量使用递归和参数化游标的 Oracle 存储过程。在我用全局范围的游标遇到这个问题之前,转换似乎很简单。

0 投票
1 回答
1272 浏览

postgresql-9.6 - pgadmin 4:导出 .tar 文件

我正在尝试在我的个人笔记本电脑(带有 PostgreSQL 9.6 的 Windows 操作系统)上使用 pgAdmin 4 将数据库导出为 .tar 文件。我也遇到了通过导入/导出工具导入 csv 的问题,并且只有在执行以下操作时才能成功导入:

从 'C:\time_table.csv' CSV HEADER 复制 public.build_info;

我已经阅读了一些通过命令行备份数据库的问题,但我希望在 pgAdmin4 中完成此操作。

我目前的步骤是:

  1. 右键单击我的数据库(在本例中为 Housing_DB)

  2. 选择我要保存的目录(导入 csv 文件的同一位置)

  3. 添加附加信息(编码、文件类型、名称等)

我立即收到与权限相关的错误,但一直在努力确定如何解决此问题:

PgAdmin4 错误

有人知道我如何通过并提供能够备份此数据库的权限吗?我查看了有关备份/恢复的文档,但没有看到任何涉及权限的内容(https://www.pgadmin.org/docs4/1.x/backup_dialog.html)。

0 投票
1 回答
1095 浏览

postgresql - psql:转储文件问题(拒绝访问)

我最近发布了关于尝试从 pgAdmin 导出数据库的帖子。我正在使用 Windows 机器和 postgresql 9.6。

我已经到了可以从命令行成功转储数据库的地步(我从每个表中获取了所有数据的打印输出),但是在保存文件时遇到了问题。好奇我是否可以输入我可能做错的事情。

命令行:转储所有 - 打印出数据

或者

数据库:转储快一点

两者都提供以下输出(最后): 在此处输入图像描述

但是,当我尝试存储到特定位置时,出现错误。这是我尝试的:

错误是:访问被拒绝

问题:

1)我的假设是我只能将此文件保存在某些位置,但我不确定如何找到此信息。我曾尝试存储在桌面上,在 PostgreSQL 的 bin 中,然后在 C:\ 上,但我对一般的存储位置非常不熟悉。

2)我也不知道如何使用 psql 来做到这一点 - 我能够连接到我希望备份/转储的数据库,但在使用 psql 命令行时无法使用“pg_dump”。

感谢阅读和帮助。

0 投票
1 回答
184 浏览

postgresql - 从 .sql 文件填充后,以编程方式测试 Postgres DB 的正确权限

我有一个项目,其中在 ci 测试服务器中使用 .sql 文件为 postgres db 播种。这将被构建并发布为 docker 镜像。

现在,我不会是唯一将这些 .sql 文件推送到服务器的人。因此,我需要检查所有 postgres 用户(可能还有未来用户)对该文件引入的所有数据库的权限。

示例:用户 A 和 B。用户 A 是超级用户,拥有所有数据库。用户 B 应该只能读取能够读取数据库 X。等等

有没有办法以编程方式测试这个?除了'尝试从 Y 读取为 B -> 错误?

到目前为止,我发现的所有其他解决方案要么是手动解决方案,要么是“尝试/错误”解决方案。

0 投票
1 回答
2025 浏览

postgresql - 错误:无法识别复制文件签名 - Postgresql 9.6

我正在使用 Postgresql 9.6 COPY BINARY 命令转储表

并使用以下命令恢复

我收到以下错误。错误:无法识别复制文件签名。

这曾经在 Postgresql 9.4 中工作正常,我错过了什么。

0 投票
1 回答
33170 浏览

json - Postgresql 查询嵌套 JSONB 字段中的对象

我正在使用 PostgreSQL 9.6,并且我有一个名为“ItemDbModel”的表,其中两列如下所示:

假设我放了很多记录,例如:

如何查询表:

  1. 记录“Content.Item.Name”包含“Dog”并且“Content.Item.Spec”包含“red”。
  2. “Content.Item.Name”包含“Dog”“Content.Item.Spec”包含“red”的记录。
  3. 记录“Content.Item”中的任何json 字段包含“dog”。

并按“Content.Item.Name.length”排序?

谢谢!

0 投票
0 回答
2097 浏览

postgresql - pg_dump 有没有办法不使用 search_path 作为模式

问题:pg_dump 命令有没有办法不使用 search_path 来设置模式,而是用表名定义模式

我的一般情况是我正在尝试转储和恢复一个包含许多模式的 postgis 数据库(这是为了将我的数据库迁移到 Amazon RDS)。在每个模式中,我都有包含地理列的表。从转储生成的 SQL 类似于:

但是,在恢复时,我收到以下错误:

pg_restore: [archiver (db)] 来自 TOC 条目 346 的错误;1259 1135099 TABLE main mapworks pg_restore: [archiver (db)] 无法执行查询:错误:关系“spatial_ref_sys”不存在第 3 行:
geometry public.geography(Geometry,4283),^ QUERY: SELECT proj4text FROM spatial_ref_sys WHERE srid = 4283 LIMIT 1 命令是:CREATE TABLE main(pk bigint NOT NULL,geometry public.geography(Geometry,4283),batch bigint NOT NULL,jso ...

然后事情就从那里变成梨形了。

到目前为止,我已经推断出,由于“公共”模式未包含在搜索路径中,因此该操作无法找到“spatial_ref_sys”表。奇怪的是,如果 EPSG 代码是 4326,这可以正常工作。

所以......我能做些什么呢?有没有办法告诉 pg_dump 不要使用 search_path?

我要转储的服务器

x86_64-pc-linux-gnu 上的 PostgreSQL 9.6.1,由 gcc (Debian 4.9.2-10) 4.9.2 编译,64 位

POSTGIS="2.3.1 r15264" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0,2012 年 3 月 6 日" GDAL="GDAL 1.10.1,2013 年 8 月 26 日发布" LIBXML="2.9.1" LIBJSON="0.11.99"(来自“2.3.0 r15146”的核心过程需要升级)拓扑(来自“2.3.0 r15146”的拓扑过程需要升级)RASTER(来自“2.3.0”的光栅过程r15146" 需要升级)

我要恢复到的服务器

x86_64-pc-linux-gnu 上的 PostgreSQL 9.6.1,由 gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) 编译,64 位

POSTGIS="2.3.0 r15146" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.2,2015 年 9 月 8 日" GDAL="GDAL 2.1.1,2016 年 7 月 7 日发布" LIBXML="2.9.1" LIBJSON="0.12" 拓扑栅格