Questions tagged «postgresql»

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

3
如何多次连接到同一张表?
我有两个表,“ hierarchy_table”和“ name_table”。 层次结构表包含一个具有多个父级和子级的对象。每个父母和孩子都由id引用。 | object_id | parent_id_1 | parent_id_2 | child_id_1 | child_id_2 | ----------------------------------------------------------------------------- | 1234 | 9999 | 9567 | 5555 | 5556 | ----------------------------------------------------------------------------- 等级表中的每个对象ID在名称表中都有一个条目: | name_id | name | -------------------------- | 1234 | ABCD | -------------------------- | 9999 | ZYXW | -------------------------- | ... 如何将hierarchy_table中的每个ID多次连接到name_table,以便可以得到填充每个名称的结果? …


2
数组integer []:如何获取表中所有不同的值并对其进行计数?
我对SQL(PostgreSQL)不太满意。这是我想做的: 我有一张桌子,字段: id SERIAL inet INET ports integer[] id | inet | ports ----+------------+------------ 2 | 1.2.2.1 | {80} 1 | 1.2.3.4 | {80,12} ... 我怎么能够 获取此表中所有使用的“端口”值:80、12 计算特定端口上有多少个Inet地址: 像这样: port | count --------+------------ 12 | 1 80 | 2 ... 如果有人在寻找它的Django版本: class Unnest(Func): function = 'UNNEST' Model.objects \ .annotate(port=Unnest('ports', distinct=True)) …

1
在PostgreSQL中压缩序列
我id serial PRIMARY KEY在PostgreSQL表中有一列。id由于我已删除相应的行,因此缺少许多。 现在,我想通过重新启动序列并以保留id原始id顺序的方式重新分配s 来“压缩”表。可能吗? 例: 现在: id | data ----+------- 1 | hello 2 | world 4 | foo 5 | bar 后: id | data ----+------- 1 | hello 2 | world 3 | foo 4 | bar 我尝试了StackOverflow答案中提出的建议,但没有成功: # alter sequence t_id_seq restart; ALTER SEQUENCE # …


3
PostgreSQL查询中未知的返回类型
以下查询有效: SELECT a, b FROM unnest(ARRAY[(1,2), (3,4)]) AS t(a integer, b integer); a b _ _ 1 2 3 2 但是,我无法使用其他列类型,例如varchar(255): SELECT a, b FROM unnest(ARRAY[(1,'hello'), (3,'world')]) AS t(a integer, b varchar(255)); ERROR: 42804: function return row and query-specified return row do not match DETAIL: Returned type unkown at ordinal …

2
在Postgres 9.3中实现json_object_agg()
我觉得我需要json_object_agg()Postgres 9.4 的功能,但现在无法从9.3升级。有什么方法可以完成我在9.3版中想要的工作吗?这是我的情况。我有一个click_activity看起来像的数据表 user | offer | clicks -----|-------|-------- fred |coupons| 3 fred |cars | 1 john |coupons| 2 但是我想把它变成这样:(汇总每个用户的活动) user | activity -----|---------- fred | {"coupons": 3, "cars": 1} john | {"coupons": 2} 我认为json_object_agg()Postgres 9.4 的功能可以完美地做到这一点,我只需要调用 select user, json_object_agg(offer, clicks) from click_activity group by 1 9.3中有办法吗?谢谢!

1
是否存在用于远程访问PostgreSQL数据库的超时选项?
我正在通过 pgAdmin III在远程PostgreSQL数据库上工作。经过很短的一段时间(例如10-15分钟)之后,却没有在pgAdmin中进行任何操作,连接将自动失效。因此,我收到一条错误消息,询问是否要重新连接。这大约需要10秒。并且数据库结构崩溃了,所以我必须重新打开之前打开的架构。 有没有办法在某个地方更改超时参数,以防止连接较长时间过期?

1
在PostgreSQL中使用许多模式而不是仅使用一种模式的利弊?
对于拥有30万个帐户(并且还在不断增长)的大型SAAS应用程序(由PostgreSql 9.4支持),每个帐户使用模式对数据进行分区与将所有数据置于一个模式中并使用外键进行数据交换的利弊是什么?在查询中将其分区? 我知道过去使用许多模式时pg_dump的速度很慢,但不确定今天是否是如此。我也知道数据库结构的任何更改都必须在所有模式上进行。而且我知道,从正面来看,将模式从一台物理服务器移动到另一台物理服务器很容易,并且可以从备份中还原模式,更不用说以这种方式分区数据了。 那么,我缺少哪些利弊?

1
如何在PostgresQL表中删除未命名的检查约束?
我创建了一个PostgresQL表,但在其中一列上添加了一个未命名的检查约束: CREATE TABLE FOO ( id serial primary key, price_range smallint CHECK (price_range > 0), url varchar(255) ); 现在,我想删除此约束,但是我不知道如何。典型的ALTER TABLE ... DROP CONSTRAINT ...需要一个,constraint_name但我没有。 我知道这里有一个答案,但是当我尝试按照那里的答案来确定检查约束的名称时: SELECT * FROM information_schema.constraint_table_usage WHERE table_name = 'your_table' 我得到的只是一个约束,其约束条件constraint_name是foo pkey指主键约束,而不是我对该price列的检查。因此,除非我丢失了某些内容,否则该答案无济于事。 如何在不丢失任何数据的情况下取消此约束? 谢谢!

5
Postgres继承分区表的索引
我有一个大约有6000万行的表,该表按状态划分为53个子表。这些表“继承”大表,如下所示: CREATE TABLE b2b_ak (LIKE b2b including indexes, CHECK ( state = 'AK') ) INHERITS (b2b8) TABLESPACE B2B; 我的问题是:如果在copy语句完成后才在b2b8上建立索引,那么子表会继承索引吗?换句话说,我想这样做: Create b2b8 Create b2b8_ak inherits b2b8 COPY b2b8 FROM bigcsvfile.csv CREATE INDEX CONCURRENTLY 事实证明,已经在子表上创建了所有索引。

5
PostgreSQL相当于MySQL查询变量?
有没有一种直接的方法可以将这些类型的MySQL查询改编为PostgreSQL: 在MySQL中设置变量 set @aintconst = -333 set @arealconst = -9.999 好像没有。 从SELECT查询分配变量,然后在我的SQL中使用这些变量,例如: select @pfID := id from platform where bios like '%INTEL%' select @clientID := id from client where platformID = @pfID 我非常感谢指针,尤其是在(2)上。

1
明确授予权限以更新必要的串行列的序列?
最近,我确实以超级用户身份创建了一个表格,其中包括一个序列ID列,例如, create table my_table ( id serial primary key, data integer ); 当我希望我的非超级用户用户对该表具有写权限时,我授予了它权限: grant select, update, insert, delete on table my_table to writer; 在这样做之后的一个随机时间点,该用户进行的插入操作开始失败,因为该用户没有权限修改my_table_id_seq与串行列关联的序列。不幸的是,我无法在当前数据库中重现该内容。 我通过为用户提供所需的权限来解决此问题,如下所示: grant all on table my_table_id_seq to writer; 有人可以帮助我了解 为什么在某个时候以前足够的权限可能会开始失败? 授予具有串行列的表的写许可权的正确方法是什么?

1
PostgreSQL中的SQL每小时​​数据聚合
我是数据库的新手,因此正在寻求您的帮助。 我有一个包含时间序列数据的表。 2012/01/01 00:10, 10 2012/01/01 00:30, 5 2012/01/01 01:00, 10 2012/01/01 01:40, 10 2012/01/01 02:00, 20 该表通过仅保留间隔的上限来存储基于间隔的数据。例如,第一行代表从[00:00-00:10]到10的间隔,第二行代表从(00:10-00:30]到5的间隔,第三行代表(00:30-01:00)的时间间隔,值为10。 我需要在Postgres中进行高效的查询,以汇总每小时数据,以获取上述结构。因此结果将是这样的: 2012/01/01 00:00, 2012/01/01 01:00, 25 2012/01/01 01:00, 2012/01/01 02:00, 30 请注意,时间序列数据很大,因此对其建立索引的任何帮助将不胜感激。 谢谢,丹


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.