标签: postgresql

Postgres - 如何从一个字段中获取它在数组中的每个 json 上重复的所有值?

我正在以 jsonb 格式在 PostgreSQL 9.5 上的某些网站上存储大量 json。其中一个字段是一组具有相同信息的 Json。这是一个例子。

[
  {
    "text": "JIMIN",
    "indices": [
      16,
      22
    ]
  },
  {
    "text": "PUMA",
    "indices": [
      23,
      28
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

我想检索所有text值,也就是说,我想进行一个查询,在这个例子中给我JIMINPUMA。我找不到使用公共运算符(如#>>)来实现这一目标的方法。有没有办法做到这一点?

postgresql json

5
推荐指数
1
解决办法
7443
查看次数

如何在后台在 Windows 命令行上(重新)启动 Postgres?

我的本地 Postgres 服务器配置为在计算机启动时启动。我刚刚更改了postgresql.conf文件,不得不重新启动服务器。我做了:

pg_ctl restart
Run Code Online (Sandbox Code Playgroud)

从在下一个命令提示符下启动服务器的命令行 BUT:

pg_ctl:旧的服务器进程(PID:2968)似乎消失了
无论如何启动服务器
服务器启动

D:\>2016-10-12 16:24:48 EDT LOG:将日志输出重定向到日志收集器进程
2016-10-12 16:24:48 EDT 提示:未来的日志输出将出现在目录“pg_log”中。

如果我ctrl-c退出或关闭命令窗口,则关闭服务器。如何pg_ctl在后台(重新)启动服务器,模拟默认情况下的工作方式(作为 Windows 服务)?

postgresql startup

5
推荐指数
1
解决办法
4万
查看次数

PostgreSQL 9.x 中的排序规则和代码集

在 Windows 7 中,"English_United States.1252"当我在安装程序中选择“英语,美国”区域设置时,排序规则设置为。在 Linux 中,排序规则"en_US.UTF-8"默认设置为。

我还没有找到任何方法在 Windows 中将排序规则的代码集设置为 UTF-8,所以我只是想知道在这些示例情况下数据库的行为是否会有所不同?或者一般来说,排序规则的代码集部分的影响是什么?

我在两个数据库中都将编码设置为 UTF-8,问题是排序规则代码集的差异是否会导致行为差异。

postgresql collation character-set

5
推荐指数
1
解决办法
5127
查看次数

帮助使用 INSERT、ON CONFLICT 和 RETURNING 进行递归 CTE 查询

我正在尝试编写查询以将文件名插入下表 path

CREATE SEQUENCE path_id_seq;
CREATE TABLE path (
    id INTEGER PRIMARY KEY DEFAULT NEXTVAL('path_id_seq'),
    parent_id INTEGER,
    name TEXT NOT NULL);

CREATE UNIQUE INDEX path_parent_id_name_ix
    ON path (COALESCE(parent_id, 0), name);

ALTER TABLE path
    ADD CONSTRAINT ios_path_parent_id_fk
    FOREIGN KEY (parent_id) REFERENCES path (id)
    ON DELETE CASCADE
    DEFERRABLE INITIALLY DEFERRED;
Run Code Online (Sandbox Code Playgroud)

例如,给定文件名Assets/images/a.pngAssets/images/b.png我想插入以下行。

id | parent_id |       name        
----+-----------+-------------------
  1 |         ¤ | Assets
  2 |         1 | images
  3 |         2 | a.png
  4 |         2 | b.png …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.5

5
推荐指数
1
解决办法
2060
查看次数

Postgres FROM 子句中的列别名?

我正在阅读 Postgres 文档和 SELECT 语句页面,并且遇到了我从未遇到过的别名方面。

关于 FROM 子句的部分,副标题alias 中,有一句话说明:

如果编写了别名,还可以编写列别名列表来为表的一列或多列提供替代名称。

我能找到的文档中没有给出示例。

我知道如何将输出名称设置为别名,但这似乎不是一回事。


SELECT 的概要包括以下几行:

... SELECT [ ALL | DISTINCT [ ON (expression[, ...] ) ] ] * |expression[ [ AS ]output_name] [, ...] [ FROMfrom_item[, ...] ] ...

并定义from_item为:

其中 from_item 可以是以下之一:

[ ONLY ]table_name[ * ] [ [ AS ]alias[ (column_alias[, ...] ) ] ] (select) …

postgresql alias

5
推荐指数
1
解决办法
3020
查看次数

用于选择返回行的 csv 的表名的文档

似乎在 Postgres 9.2 中这种语法

SELECT <table name>
FROM <table name>
Run Code Online (Sandbox Code Playgroud)

返回所有列聚合为伪 CSV 的行,如下所示:

(1,test,48,,48,,"2016-10-29 00:47:09.348986+00","2016-10-29 00:47:09.348986+00",,1,9,1,1,,1,0,"",,"")
(6,subject,0,,,,"2016-10-30 00:54:38.203023+00","2016-10-30 00:54:38.203023+00",,1,10,1,3,,1,0,content,,)
Run Code Online (Sandbox Code Playgroud)

我正在尝试查找此行为的相关文档。到目前为止,我已经看过了:

但我似乎找不到任何参考资料。

postgresql select postgresql-9.2

5
推荐指数
1
解决办法
100
查看次数

计算出库单价

目前我有这样的数据,

CREATE TABLE foo (id, qty, unit_price, date, action) AS
    VALUES
    (1,  2000, 4.01235, '2015-10-10'::timestamp, 'in'),
    (2,   -30, NULL   , '2015-10-11'::timestamp, 'out'),
    (3,  1800, 4.9    , '2015-10-25'::timestamp, 'in'),
    (4, -1000, NULL   , '2015-11-12'::timestamp, 'out'),
    (5,  -980, NULL   , '2015-11-20'::timestamp, 'out');
Run Code Online (Sandbox Code Playgroud)

我需要计算传出行的平均价格,以便结果看起来像这样。

身份证 | 数量 | unit_price | 日期 | 行动
----------------------------------------------
1 | 2000 | 4.01235 | 2015-10-10 | 在
2 | -30 |    4.01235 | 2015-10-11 | 出去
3 | 1800 | 4.9 | 2015-10-25 | 在
4 | …

postgresql window-functions

5
推荐指数
1
解决办法
465
查看次数

Postgresql 提高大表中的选择性能/并行性

我有一个巨大的表(> 30 亿行,总计 3 TB),使用 Postgres 9.5 定义如下:

CREATE TABLE user_events
(
    user_id VARCHAR NOT NULL,
    datetime BIGINT NOT NULL,
    field1 VARCHAR,
    field2 VARCHAR,
    field3 VARCHAR,
    field4 VARCHAR,
    field5 VARCHAR,
    CONSTRAINT user_events_user_id_datetime_pk PRIMARY KEY (user_id, datetime)
);

alter table user_events set (autovacuum_vacuum_cost_delay=10);
Run Code Online (Sandbox Code Playgroud)

我需要大约每秒 2000 次查询这个表,但我无法进行足够的并行化(我达到了大约一半)。

使用以下准备好的语句,我得到了合理的(我想)响应时间:

PREPARE getact AS select * from user_events where user_id = $1 order by datetime limit 1000;

explain analyze EXECUTE getact('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE user_events
(
    user_id VARCHAR NOT NULL,
    datetime BIGINT NOT NULL,
    field1 VARCHAR, …
Run Code Online (Sandbox Code Playgroud)

postgresql performance postgresql-9.5 query-performance performance-tuning

5
推荐指数
1
解决办法
875
查看次数

Postgres 中数组的开销是多少?

与相同数据类型的普通列相比,数组的额外开销是多少?换句话说,如果一个数组几乎总是有一个值,那么使用数组而不是普通列会“浪费”多少空间?

postgresql array

5
推荐指数
1
解决办法
1332
查看次数

如何在相邻列中显示单独表的查询?

我有两个表 - 一个标题为“计划约束”的表,其中包含“sot_allowed”时间间隔,另一个标题为“计划”,其中包含“sot_contribution”时间间隔。

以下是两个表的架构(为便于阅读而进行了编辑):

                         Table "public.planning_constraints"
   Column    |           Type           |          Modifiers  
-------------+--------------------------+-------------------------------
 start_time  | timestamp with time zone | 
 end_time    | timestamp with time zone | 
 sot_allowed | interval                 | 

                         Table "public.planning"
      Column      |           Type           |         Modifiers          
------------------+--------------------------+----------------------------
 start_time       | timestamp with time zone | 
 end_time         | timestamp with time zone | 
 sot_contribution | interval                 | 
Run Code Online (Sandbox Code Playgroud)

我可以分别查询它们并生成我想要的总数。“planning_constraints”表的查询是:

SELECT
  date_trunc('day', start_time - INTERVAL '18 hours')::date AS planning_day,
  sum(sot_allowed) AS minutes_allowed
FROM planning_constraints
WHERE start_time>='2016-11-26 18:00:00+00' AND start_time<'2016-12-03 18:00:00+00' AND comment like …
Run Code Online (Sandbox Code Playgroud)

postgresql join datetime sum coalesce

5
推荐指数
1
解决办法
108
查看次数