Questions tagged «postgresql»

PostgreSQL的所有版本。如果该上下文很重要,请添加其他特定于版本的标记,例如postgresql-11。



2
PostgreSQL选择整数类型的空字段
我有一个表格,我需要选择所有fk_fc_id字段为空的行(以删除它们为前提), Column | Type | Modifiers ---------------+-----------------------------+------------------------------------------------------------ di_timestamp | timestamp without time zone | di_item_value | character varying(10) | fk_fc_id | integer | di_id | integer | not null default nextval('data_item_di_id_seq1'::regclass) 但这行不通 # select fk_fc_id,di_timestamp,di_item_value from data_item where fk_fc_id=""; ERROR: zero-length delimited identifier at or near """" LINE 1: ...di_timestamp,di_item_value …
13 postgresql 

2
pg_upgrade无法识别的配置参数“ unix_socket_directory”
我正在尝试使用此命令作为postgres用户将Fedora 18中的Postgresql从9.2升级到9.3 $ pg_upgrade -b /bin -B /usr/pgsql-9.3/bin -d /var/lib/pgsql/data -D /var/lib/pgsql/9.3/data/ -j 2 -u postgres 日志中的错误 命令:“ / bin / pg_ctl” -w -l“ pg_upgrade_server.log” -D“ / var / lib / pgsql / data” -o“ -p 50432 -b -c listen_addresses =” -c unix_socket_permissions = 0700 -c unix_socket_directory ='/ var / …

2
约束-一个布尔行为true,所有其他行为false
我有一列: standard BOOLEAN NOT NULL 我想强制执行True,其余所有都设置为False。根据此约束,没有FK或其他任何内容。我知道我可以用plpgsql完成它,但这似乎像是一把大锤。我更喜欢a CHECK或UNIQUE约束。越简单越好。 一行必须为True,不能全部为False(因此,插入的第一行必须为True)。 该行将需要更新,这意味着我必须等待检查约束,直到更新完成,因为所有行都可能先设置为False,然后再设置为True。 products.tax_rate_id和之间有一个FK tax_rate.id,但与默认税率或标准税率无关,用户可以选择默认税率或标准税率来轻松创建新产品。 PostgreSQL 9.5(如果重要)。 背景 该表是税率。税率之一是默认税率(standard因为默认税率是Postgres命令)。添加新产品时,将对产品应用标准税率。如果没有standard,则数据库必须进行猜测或进行各种不必要的检查。我认为,简单的解决方案是确保存在standard。 上面的“默认”是指表示层(UI)。有一个用于更改默认税率的用户选项。我或者需要添加额外的检查以确保GUI /用户不会尝试将tax_rate_id设置为NULL,或者只是设置默认税率。

1
PostgreSQL 9.6中不需要的Nest Loop与Hash Join
我在PostgreSQL 9.6查询计划上遇到麻烦。我的查询如下所示: SET role plain_user; SELECT properties.* FROM properties JOIN entries_properties ON properties.id = entries_properties.property_id JOIN structures ON structures.id = entries_properties.entry_id WHERE structures."STRUKTURBERICHT" != '' AND properties."COMPOSITION" LIKE 'Mo%' AND ( properties."NAME" LIKE '%VASP-ase-preopt%' OR properties."CALCULATOR_ID" IN (7,22,25) ) AND properties."TYPE_ID" IN (6) 我为上述表启用了行级安全性。 使用set enable_nestloop = True,查询计划器将运行嵌套循环,其总运行时间约为37秒:https : //explain.depesz.com/s/59BR …


1
PostgreSQL启用扩展而无需超级用户
我有一台PostgreSQL 9.5服务器,在该服务器上有一些脚本可以自动为用户创建角色和数据库。在这些数据库中,启用特定的扩展(例如pgcrypto)将很有帮助,但是据我所知,它必须是超级用户才能运行CREATE EXTENSION。有没有一种方法可以启用此类扩展,而无需使用超级用户帐户手动登录?

2
为什么不能在同一条语句中更新插入CTE中的行?
在PostgreSQL 9.5中,给出了一个使用以下命令创建的简单表: create table tbl ( id serial primary key, val integer ); 我运行SQL插入一个值,然后在同一条语句中更新它: WITH newval AS ( INSERT INTO tbl(val) VALUES (1) RETURNING id ) UPDATE tbl SET val=2 FROM newval WHERE tbl.id=newval.id; 结果是UPDATE被忽略: testdb=> select * from tbl; ┌────┬─────┐ │ id │ val │ ├────┼─────┤ │ 1 │ …
13 postgresql  cte 

3
pg_restore:[存档]在文件头中找不到魔术字符串
我正在使用PostgreSQL 9.1,并希望还原使用生成的备份文件pg_dump: sudo pg_dump -h 127.0.0.1 -U postgres --clean --inserts -E UTF8 -f out.sql database_name 此命令生成一个有效的sql文件,该文件首先删除任何现有的数据库对象,然后生成所有表,索引,序列等,最后插入数据。 当我尝试使用以下方法还原生成的备份文件时:(添加换行符仅用于显示目的) sudo pg_restore -d database_name -h 127.0.0.1 -U postgres --format=c --clean --create out.sql 它失败并打印: pg_restore: [archiver] did not find magic string in file header 是什么原因呢?

2
在PostgreSQL中使用GIN索引时如何加快ORDER BY排序?
我有一个这样的表: CREATE TABLE products ( id serial PRIMARY KEY, category_ids integer[], published boolean NOT NULL, score integer NOT NULL, title varchar NOT NULL); 一个产品可以属于多个类别。category_ids列包含所有产品类别的ID列表。 典型查询如下所示(始终搜索单个类别): SELECT * FROM products WHERE published AND category_ids @> ARRAY[23465] ORDER BY score DESC, title LIMIT 20 OFFSET 8000; 为了加快速度,我使用以下索引: CREATE INDEX idx_test1 ON products …

2
PostgreSQL:如何列出访问特定表的所有存储函数
介绍: PostgreSQL数据库具有数百种存储的功能,包括过时的,未使用的等。 问题 我需要找出与表X有任何关系的所有存储函数-因为我想更改表结构。其中一些可能不会被使用,因此仅浏览代码就无法做到这一点。 我拥有ATM的解决方案正在运行psql \df+和grepping输出,但是我更喜欢类似数据库的解决方案,即使用信息模式。这绝对是一个重复的任务,我希望它干净整洁。 有什么建议?

3
使用CASE选择UPDATE查询中的列?
我可以CASE用来选择要在SELECT查询(Postgres)中显示的列,如下所示: SELECT CASE WHEN val = 0 THEN column_x WHEN val = 1 THEN column_y ELSE 0 END AS update, ... UPDATE在Postgres中执行查询时(即选择应更新哪些列),是否有可能完全相似?我假设没有,因为我对此一无所获,但是也许有人有一个聪明的选择(除了使用过程,还是使用CASE来更新每个列,以确定是应该为该列的值分配一个新值还是简单地重新分配现有值)值)。如果没有简单的选择,我当然也会接受。 额外信息:在我的情况下,我有14列可能要更新的列,每个匹配的行仅更新一个(要更新的表在查询中与另一个连接)。要更新的行数很可能会有所不同,可能是数十行或数百行。我相信加入条件的索引已经到位。

2
如何在PostgreSQL中使DISTINCT ON更快?
我station_logs在PostgreSQL 9.6数据库中有一个表: Column | Type | ---------------+-----------------------------+ id | bigint | bigserial station_id | integer | not null submitted_at | timestamp without time zone | level_sensor | double precision | Indexes: "station_logs_pkey" PRIMARY KEY, btree (id) "uniq_sid_sat" UNIQUE CONSTRAINT, btree (station_id, submitted_at) 我试图为每个获取level_sensor基于的最后一个值。大约有400个唯一值,每天每个大约2万行。submitted_atstation_idstation_idstation_id 创建索引之前: EXPLAIN ANALYZE SELECT DISTINCT ON(station_id) station_id, …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.