问题标签 [postgresql-9.0]

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

sql - 连接有或没有记录的表

我有两张桌子,比如unitsprice。单位表字段是unit1, unit2Price表字段是id, rateper, price. 现在我想像表一样连接这两个表Pricerateper <=0然后Price table is empty返回 unit1else rateper。我写了如下查询,但没有工作

我正在使用postgresql9.0 版

单位表

价格表

如果价格表没有行,则显示结果为

0 投票
0 回答
523 浏览

postgresql-9.0 - Postgresql 分区:主表上的 seq 扫描成本异常高

我有一个包含几亿行的小数据库,用于存储呼叫详细记录。我按照以下方式设置分区:

http://www.postgresql.org/docs/9.1/static/ddl-partitioning.html

直到现在它似乎工作得很好。我有主表“acmecdr”,它具有插入正确分区的规则并检查约束以确保在选择数据时使用正确的表。以下是其中一个分区的示例:

现在,正如人们所期望SET constraint_exclusion = on的那样,应该自动首选正确的分区,并且由于上面有索引,因此应该只进行一次索引扫描。

然而:

所以,我可以看到它没有扫描所有分区,只有相关的分区(在索引扫描中并且非常快)以及主表(从我看到的示例中这似乎是正常的)。但是对master表进行seq扫描的高成本似乎是不正常的。我很乐意让它下来,我看不出有什么原因,特别是因为主表中没有任何记录:

除非我遗漏了一些明显的东西,否则这个查询应该很快。但事实并非如此——大约需要 2 分钟?这似乎根本不正常(即使对于慢速服务器)。

我不知道接下来要尝试什么,所以如果有人对正确的方向有任何建议或指示,将不胜感激。

0 投票
1 回答
5145 浏览

sql - PostgreSQL 9.0 和 9.1 之间枚举类型文字排序的差异

enumPostgreSQL 9.0 和 9.1 之间的类型工作方式发生了一些奇怪的更新。该表在 PostgreSQL 9.1pg_catalog.pg_enum中有一个新列。enumsortorder此顺序似乎覆盖了先前基于 OID 的枚举顺序。

PostgreSQL 9.0 文档

保证特定枚举类型的 OID 以该类型应排序的方式排序,但不保证不相关枚举类型的 OID 的排序。

PostgreSQL 9.1 文档

pg_enum 行的 OID 遵循一个特殊规则:偶数 OID 保证以与其枚举类型的排序顺序相同的方式排序。也就是说,如果两个偶数 OID 属于同一个枚举类型,则较小的 OID 必须具有较小的 enumsortorder 值。奇数 OID 值与排序顺序无关。此规则允许枚举比较例程在许多常见情况下避免目录查找。创建和更改枚举类型的例程会尽可能尝试将 OID 分配给枚举值。

创建枚举类型时,会为其成员分配排序顺序位置 1..n。但是稍后添加的成员可能会被赋予负数或小数的 enumsortorder 值。对这些值的唯一要求是它们在每个枚举类型中的顺序正确且唯一。

我的问题

对于jOOQ 代码生成器,我正在阅读pg_catalog.pg_enum表格,按 OID 对枚举文字进行排序,这是在 PostgreSQL 9.0 中指定的方式。使用更新的规范,似乎我应该按 排序文字enumsortorder,这似乎表现不同,因为它尊重“中间”的枚举文字插入。

pg_catalog?

0 投票
1 回答
126 浏览

php - 将 IN 运算符与 pg_prepare 一起使用

我想将 pg_prepare 与 IN 运算符一起使用

我也想将它与 postgres 数组一起使用,我似乎无法工作,也无法在文档中找到它。

谢谢你的帮助,

标记

0 投票
1 回答
31 浏览

windows-server-2008 - Windows Server 2008 与 ArcGIS INSPRE 模块下 Postgresql 9.0 中的帐户创建错误

直升机,

Postgresql 和 ArcGIS INSPIRE 模块有一些问题。

首先,我们在这个问题上不是专家和经验丰富的,所以对“业余”句子感到抱歉。

问题是,当我们尝试在 pgAdminIII 中创建一个帐户并重新启动时,没有建立与数据库/服务的连接,并且丢失了之前有效的设置。

尝试与管理员连接时,我们收到了类似的错误消息:

http://www.pgadmin.org/docs/1.8/images/no-hba.png

我们正在使用内置的 postgresql.conf 编辑器来更改

listen_addresses = '*' ,但没关系。

我们也更改了 pg_hba.conf(添加了所需的参数),但是当我们完成编辑并保存时,添加的行从文件中消失了。

重启后,postgresql 无法连接到数据库,所以我们不得不改回原来的设置/conf 文件。

我们发现在这些.conf 文件中可以更改很多参数,但我们不明白哪里出了问题。

谢谢。就这样。:)

0 投票
1 回答
1390 浏览

sql - 按固定数量的记录分区

我想知道如何按固定数量的记录对窗口进行分区。

示例(http://sqlfiddle.com/#!1/7df86)。

我想要三场比赛的总和,从最高的比赛号码开始,按比赛号码降序排列。像这样。

如何在不使用子查询的情况下使用窗口函数来实现这一点?我也不能使用例如 with 语句。它必须是一个查询,因为将执行它的外部解析器(我无法控制)。看起来很简单,最近几天我都在琢磨它:)

0 投票
1 回答
13810 浏览

postgresql - 尽管“SET client_min_messages TO WARNING”之前的信息输出

CentOS 6.5 上的 postgresql-9.0.15。我有一个输出 INFO 消息的 plperlu 函数。我想在测试期间抑制它(使用 psql,它的行为也如下所示),但我什至似乎无法从 pgAdminIII(win2003 为 1.18.1)查询窗口执行此操作:

我运行它并查看“消息”选项卡,这是我的 INFO 消息。

(这可能看起来类似于How to suppress INFO messages when running psql scripts,但我不想禁用整个会话的 INFO 消息,只是其中的一部分,然后将最小值设置回 NOTICE。)

上面的代码片段我做错了什么?client_min_messages 是否不适用于 pl/perlu 函数?

更新:经过进一步调查,即使使用 plpgsql 函数,它似乎也会发生,而不仅仅是 plperlu 函数:

我在 pgAdminIII 查询窗口中运行上面的代码片段,“这不应该出现”出现在消息选项卡中。奎?

更新 2:我还尝试了log_min_messages以防万一。相同的行为。

0 投票
1 回答
1461 浏览

postgresql - 在多个模式中选择同一个表而不使用 union all

架构名称:A,B

两种模式都有相同的表:

表名:stock。菲尔兹no,Stname

我想从两个骗局的库存表中检索详细信息。

所以我使用这个查询:

我想在没有联合的情况下获得表格的详细信息。可能吗 ?怎么做 ?

我正在使用 postgresql 9.0

0 投票
1 回答
1174 浏览

triggers - dblink 无法在更新后触发器中更新同一数据库上的表

我正在研究使用 slony 复制的数据库,并尝试创建一个触发器,该触发器将在INSERT对表进行操作后触发。

在此触发器中,我尝试使用 dblink 更新同一数据库的另一个表。但是我收到一条错误消息,说当我尝试更新第二个表时,我刚刚插入到第一个表中的值不存在。
我正在使用 dblink,因为如果我使用常规 UPDATE 语句更新第二个表,则不会触发 slony 同步。

第一张表:

第二张表:

扳机:

触发功能:

至于错误信息,我不知道如何让PostgreSQL打印英文信息。

基本上它说SHIPPING_ID外键不存在于运输表中。

奇怪的是,当我尝试在不使用dblink_exec它的情况下进行更新时效果很好。但正如我之前所说,我需要通过 dblink 进行此更新,以确保 slony 会注意到更新。

0 投票
1 回答
5859 浏览

sql - pg_dump 与 COPY (SELECT * FROM my_table)

我需要将表的内容从一个数据库复制到另一个数据库,该数据库具有当前为空的相同表。

我打算从旧表中转储表数据,然后将其简单地导入到新数据库中的空表中。但是,我在使用 pg_dump 时遇到了一些我不理解的行为。

我尝试使用以下命令将表数据转储到文件中:

这行得通,但是如果我像这样查看表格,我只会得到 8 条记录,并且表格中有超过 1000 条记录:

所以,我尝试使用 COPY 命令生成一个 .csv 文件,我看到了类似的行为:

我得到与 pg_dump 相同的 8 条记录。但是,与:

我得到了所有 1266 条记录。

我会假设这些命令都应该返回相同的数据,但显然,我错了。有什么区别?