第1部分:
我正在使用 Postgres 9.5,我试图弄清楚如何使用 JSON 数组插入 postgres 表。我用以下命令创建了一个表:
CREATE TABLE inputtable (
data_point_id SERIAL PRIMARY KEY NOT NULL,
chart_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
properties jsonb NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
json 数据格式如下所示:
[
{ col1: a, col2: 5, col3: 1, col4: one},
{ col1: b, col2: 6, col3: 2, col4: two},
{ col1: c, col2: 7, col3: 3, col4: three}
]
Run Code Online (Sandbox Code Playgroud)
由于一些变化,我现在必须能够基于 user_id 每行插入一个 json 对象。最后,我希望输出如下所示:
data_point_id | chart_id | user_id | properties
---------------+----------+----------+--------------
1 | 1 | 1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Postgres 中配置复制,并遇到服务器忽略wal_level配置文件中的设置的问题。
我在配置文件中设置:
wal_level = hot_standby max_wal_senders = 5
但是,当我开始启动 Postgres 时,我遇到了错误:
WAL 流(max_wal_senders > 0)需要 wal_level “archive”、“hot_standby”或“logical”
如果我设置了max_wal_senders = 0,服务器启动正常,但是在 psql 中运行“show all”会显示wal_level = minimal.
-bash-4.2$ grep wal_level postgresql.conf wal_level = hot_standby # 最小、存档、hot_standby 或逻辑 -bash-4.2$ psql -c 'show "wal_level";' wal_level ----------- 最小的
知道为什么会忽略配置值吗?
Postgres 错误日志中没有什么值得注意的:
Oct 13 11:03:53 postgres[12324]: [3-1] LOG:数据库系统在 2016-10-13 10:55:35 UTC 关闭 10 月 13 日 11:03:53 postgres[12324]:[4-1] 日志:MultiXact 成员环绕保护现已启用 10 月 13 日 11:03:53 postgres[12328]:[3-1] 日志:autovacuum 启动器启动 …
我有一个简单的表叫做事件
它有日期、开始时间、结束时间和状态
我在同一日期有多个事件,开始和结束。
要知道是否有人可以预约,我必须检查该日期和开始,结束我是否有一条状态为假(未占用)的行。
带有一些示例代码的表定义:
CREATE SEQUENCE events_id_seq;
CREATE TABLE events(
id int4 NOT NULL DEFAULT nextval('events_id_seq'::regclass),
event_date date NULL,
status bool NULL DEFAULT false,
event_start time NULL,
event_end time NULL
) ;
INSERT INTO events(event_date,status,event_start,event_end)
VALUES
('2016-10-10', TRUE, '08:00:00','08:30:00'),
('2016-10-10', TRUE, '08:00:00','08:30:00'),
('2016-10-10', FALSE, '08:00:00','08:30:00'),
('2016-10-10', TRUE, '08:00:00','08:30:00'),
('2016-10-10', TRUE, '08:30:00','09:00:00'),
('2016-10-10', FALSE, '08:30:00','09:00:00'),
('2016-10-10', FALSE, '08:30:00','09:00:00'),
('2016-10-10', FALSE, '08:30:00','09:00:00');
select distinct event_date, event_start, event_end, (
select count(*) from events e1
where
e1.status = false and
e1.event_date = e.event_date …Run Code Online (Sandbox Code Playgroud) 假设一个充满产品的数据库。一个产品可以恰好属于 1 个集合并且由用户创建。数据库的粗略规模:
我正在尝试检索用户拥有的产品+集合的数量,以及每个集合中的产品数量(该信息应该在所有 x 天生成并在 ElasticSearch 中编入索引)。
对于用户查询,我目前正在做这样的事情:
SELECT
users.*,
(SELECT
count(*)
FROM
products product
WHERE
product.user_id = user.id
) AS product_count,
(SELECT
count(*)
FROM
collections collection
WHERE
collection.user_id = user.id
) AS collection_count
FROM
users user
Run Code Online (Sandbox Code Playgroud)
所有 *_id 字段都已编入索引。使用解释(分析,详细)(删除敏感信息):
Limit (cost=0.00..156500.97 rows=100 width=41) (actual time=0.064..28345.363 rows=100 loops=1)
Output: (...), ((SubPlan 1)), ((SubPlan 2))
-> Seq Scan on public.users user (cost=0.00..14549429167.11 rows=9296702 width=41) (actual time=0.064..28345.241 rows=100 loops=1)
Output: (...), (SubPlan 1), (SubPlan 2)
SubPlan 1 …Run Code Online (Sandbox Code Playgroud) 我经常惊讶于某些操作如何为我生成大量WAL 文件。
我想要这些 WAL 文件用于时间点恢复(此外,我还执行夜间完全转储)所以需要提供的基本功能,我不想改变它(即我不是在寻找一种方法来打开 WAL存档关闭等)
使用具有以下设置的 Postgres 9.5:
wal_level = archive
checkpoint_timeout = 20min
max_wal_size = 1GB
min_wal_size = 80MB
archive_command = 'test ! -f /backup/wal/%f && cp %p /backup/wal/%f'
Run Code Online (Sandbox Code Playgroud)
我今天运行了这个语句:
WITH table2_only_names AS (
SELECT id , name FROM table2
)
UPDATE table1
SET table2_name = table2_only_names.name
FROM table2_only_names
WHERE table1.table2_id = table2_only_names.id;
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE public.table1 (
id BIGINT PRIMARY KEY NOT NULL DEFAULT nextval('table1_id_seq'::regclass),
table2_id BIGINT,
table3_id BIGINT,
positive_count INTEGER NOT NULL …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 pg_dump 对模式进行备份,例如,
$ pg_dump -U ganapathy -n hotel_management > ganapathy_schema.dump
Run Code Online (Sandbox Code Playgroud)
它创建了备份,但我无法使用pg_restore. 它给出这样的错误,
pg_restore: [archiver] 输入文件似乎不是有效的存档
然后我尝试使用 . sql扩展像,
$ pg_dump -U ganapathy -n hotel_management > ganapathy_schema.sql
Run Code Online (Sandbox Code Playgroud)
但它也给出了同样的错误。
pg_restore: [archiver] 输入文件似乎不是有效的存档
之后,我尝试通过-Fc在.dump和.sql扩展中指定格式来进行备份。然后我尝试恢复它。它成功恢复。
所以现在我的怀疑是,
PostgreSQL 中 pg_dump 中 .dump 和 .sql 的扩展名有什么区别?
因为两者都需要指定格式。
提前致谢...
我正在尝试查找 PostgreSQL可信过程语言 (PL)的列表,因为我经常需要在非超级用户环境中使用 PL。
但我找不到确切的答案。例如,这里的Postgres 文档表明 perl 有一个受信任和一个不受信任的 PL,这是一种我不太熟悉的语言。这里,它说TRUSTED关键字是您在创建 PL 语言时可以指定的内容,在某些情况下可能会被忽略。
但我也有(可能是错误的)印象,即某些 PL 语言仅受信任(例如 JavaScript PL/V8)或仅不受信任(Python)。其他帖子似乎表明可以调整 pg 以使用以下内容制作甚至是python一种可信赖的语言:
UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpythonu';
Run Code Online (Sandbox Code Playgroud)
我的问题比理论更实际。基本上:
是否可以将任何 PL 设置为可信和不可信?
如果不是,可以设置为受信任或受信任的特定语言是什么。
(“受信任”是指普通用户在 PL 语言中创建/执行/修改函数时应该具有有效的相同权限。另外,我使用的是 Postgres 9.x)
我目前正在恢复一个数据库,我尝试了三次恢复数据库。第三次我成功了,但不幸的是,其他两次恢复数据库的尝试似乎仍在运行,但从未完成。
我在 pgAdmin 屏幕上有这两个蓝色窗口,我无法删除或停止执行。我尝试了很多东西,我什至卸载了两次PostgreSQL,但恢复窗口又出现了。
我使用的是 Windows 8 和 PostgreSQL 9.6。
所以是一个 postgres 数据库(特别是一个 AmazonRDS 实例 fwiw)。
安排事情以获取任何记录的最后更新(或创建)时间很容易。
该信息将是日期时间。
我想要实现的是:想象一个整数,sequenceNumber,它对数据库来说是原子的和全局的。
简单地说,每个表都会有一个 sequenceNumber 字段。
任何时候任何记录(即,在任何表中)被更新(或创建),它都会获得下一个序列号。
您知道如何拥有对数据库一无所知的程序员朋友。海浪。我的白痴解决方案是,在整个代码库中,每次创建或修改记录时,一定要记得更新它的序列号。(当然,只需要一个全局系统来给出下一个原子序列号。)
对此的声音解决方案是什么?
事实上,它是否已经以某种我不知道的方式完全可用,或者?
现在我的数据库在调用我的用户函数时断开连接。我想寻求帮助,但消息是西班牙语。
我如何让我的日志是英文的?我能理解说的是什么,但不知道该怎么做。
或者至少让它正确显示重音字符,如:
terminando la conexión
terminando la conexión
Run Code Online (Sandbox Code Playgroud)
这是我的 pg_log 文件
2016-12-15 17:50:54 VET LOG: proceso de servidor (PID 19360) fue terminado por una excepción 0xC0000005
2016-12-15 17:50:54 VET DETALLE: El proceso que falló estaba ejecutando: SELECT * FROM avl_db.process_avl_pool();
2016-12-15 17:50:54 VET HINT: Vea el archivo «ntstatus.h» para una descripción del valor hexadecimal.
2016-12-15 17:50:54 VET LOG: terminando todos los otros procesos de servidor activos
2016-12-15 17:50:54 VET WARNING: terminando la conexión debido a una falla en otro …Run Code Online (Sandbox Code Playgroud) postgresql ×10
amazon-rds ×1
count ×1
format ×1
functions ×1
index ×1
performance ×1
pg-dump ×1
pg-restore ×1
pgadmin ×1
pgadmin-4 ×1
restore ×1
security ×1
sequence ×1