我正在以 jsonb 格式在 PostgreSQL 9.5 上的某些网站上存储大量 json。其中一个字段是一组具有相同信息的 Json。这是一个例子。
[
{
"text": "JIMIN",
"indices": [
16,
22
]
},
{
"text": "PUMA",
"indices": [
23,
28
]
}
]
Run Code Online (Sandbox Code Playgroud)
我想检索所有text值,也就是说,我想进行一个查询,在这个例子中给我JIMIN和PUMA。我找不到使用公共运算符(如#>>)来实现这一目标的方法。有没有办法做到这一点?
我的本地 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 服务)?
在 Windows 7 中,"English_United States.1252"当我在安装程序中选择“英语,美国”区域设置时,排序规则设置为。在 Linux 中,排序规则"en_US.UTF-8"默认设置为。
我还没有找到任何方法在 Windows 中将排序规则的代码集设置为 UTF-8,所以我只是想知道在这些示例情况下数据库的行为是否会有所不同?或者一般来说,排序规则的代码集部分的影响是什么?
我在两个数据库中都将编码设置为 UTF-8,问题是排序规则代码集的差异是否会导致行为差异。
我正在尝试编写查询以将文件名插入下表 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.png,Assets/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) 我正在阅读 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) …
似乎在 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)
我正在尝试查找此行为的相关文档。到目前为止,我已经看过了:
但我似乎找不到任何参考资料。
目前我有这样的数据,
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 | …
我有一个巨大的表(> 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
与相同数据类型的普通列相比,数组的额外开销是多少?换句话说,如果一个数组几乎总是有一个值,那么使用数组而不是普通列会“浪费”多少空间?
我有两个表 - 一个标题为“计划约束”的表,其中包含“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)