标签: postgresql

PostgreSQL - 按索引对数组求和

我在 PostgreSQL 中有一个 doubles 列(double precision[])的数组,它可以保留一天的半小时值。所以每个数组都有 48 个值。我需要一个有效的查询,它按索引对所有这些数组列求和,并生成一个新的 48 数组索引,如下所述

A = double[48] = {3,2,0,3....1}
B = double[48] = {1,0,3,2....5}

RESULT = double[48] = {A[0] + B[0], A[1] + B[1],...,A[47] + B[47]}
Run Code Online (Sandbox Code Playgroud)

谢谢!

postgresql performance array postgresql-performance

2
推荐指数
1
解决办法
2936
查看次数

更新表格的每个单元格?

我有一个包含m列和n行的表格。我使用的 ETL 工具''向每个没有值的单元格写入了一个空的 ( ),我希望它们可以NULL代替。这让我思考是否有可能在单个语句中对UPDATE每个带有 , 值的单元格进行''处理NULL
在我的表中,每一列恰好是VARCHAR(或CHARACTER VARYING)。

    Col1|Col2|...|Coln          Col1|Col2|...|Coln
Row1   a   ''  ''    1      Row1   a NULL NULL   1
Row2   c   ''   e   ''      Row2   c NULL   e NULL
...                     -->  ...
Rown  aa    f  ''  123      Rown  aa    f NULL 123
Run Code Online (Sandbox Code Playgroud)

可以用 SQL 吗?PL/pgSQL 怎么样?我做了一些谷歌搜索,但找不到任何真正相关的东西。

postgresql

2
推荐指数
1
解决办法
448
查看次数

postgres 从角色成员中删除用户

如何删除角色成员?我的角色名称tester是角色postgres 的成员(我不想要)。如何删除此会员资格?

 Role name |                   Attributes                   | Member of  
-----------+------------------------------------------------+------------
 tester    |                                                | {postgres}
 postgres  | Superuser, Create role, Create DB, Replication | {}
Run Code Online (Sandbox Code Playgroud)

postgresql

2
推荐指数
1
解决办法
6816
查看次数

多次调用 UPSERT 函数到不同的输入

我有一个功能:

merge_vehicles(vid, cid, vname, reg_no, name, name_1st)
Run Code Online (Sandbox Code Playgroud)

我可以在输入上多次调用它吗

(2335, 55, '246BDH', '246BDH', '811', 1),
(2336, 55, '038THX', '038THX', '831', 1),
....
Run Code Online (Sandbox Code Playgroud)

该函数是一个UPSERT实现返回void. 这是一个仓库数据库(事实表)。我们有一个实时数据库,每小时可以获取 1000 多个输入。我们想使用此命令将我们的数据与新数据合并。

它是一个表函数。(我已经为我们拥有的每个表定义了类似的函数 - 即 5。)结果是,它将更新现有行(如果存在),否则插入新行。

Postgres 版本是 9.3。

函数是此处接受的答案的一个版本:

postgresql functions upsert

2
推荐指数
1
解决办法
1607
查看次数

text 和 pg_catalog.text 有什么区别?

我有一个经典的 3 环境设置(开发、暂存和生产),每个环境都有自己的RDS PostgreSQL 9.3。客户端/服务器版本是psql (9.3.5, server 9.3.3).

为了保持模式对齐,我有一个周期性的模式差异作业,当模式不同时它会通知我。

几天前,我开始收到许多这些差异:

CREATE TABLE ...
...
<     title pg_catalog.text,
<     subtitle pg_catalog.text,
---
>     title text,
>     subtitle text,
Run Code Online (Sandbox Code Playgroud)

textstaging 中的字段以某种方式转换为pg_catalog.textprod。

text和 和有pg_catalog.text什么区别?如何将这两个模式等同起来?

schema postgresql datatypes

2
推荐指数
1
解决办法
4315
查看次数

PostgreSQL 在 data_type 设置为 ARRAY 时确定列类型

我遇到了一个奇怪的地方,PostgreSQL在表中设置了data_typeto 。我做了以下查询以获得一些见解:ARRAYinformation_schema.columns

SELECT * FROM information_schema.columns 
WHERE table_schema NOT IN ('pg_catalog', 'information_schema') 
AND table_name='__table_name__';
Run Code Online (Sandbox Code Playgroud)

我注意到了该udt_name列,想知道它是否是确定该列数据是什么类型的数组的可靠方法?

SELECT column_name, data_type, udt_name FROM information_schema.columns 
WHERE table_schema NOT IN ('pg_catalog', 'information_schema') 
AND table_name='__table_name__';
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.3

2
推荐指数
1
解决办法
1734
查看次数

当需要具有运算符类的索引时,唯一索引是否比唯一约束更好

Postgres 文档说:

使用索引来强制唯一约束可以被视为不应直接访问的实现细节。但是,应该注意没有必要在唯一的列上手动创建索引;这样做只会复制自动创建的索引。

基于此,如果我想要一个列上的表达式索引并且还希望该列是唯一的,那么case 2下面会更好,因为它可以使用单个索引完成上述操作。而case 1由于唯一约束而自动创建一个索引,而另一个因为我需要小写索引而自动创建?

正如@Colin'tHart 指出的那样,这两种情况不一样。我应该在不使用lower()表达式的情况下发布这个问题。在那种情况下,我的理解是 aCREATE UNIQUE INDEX比唯一约束和简单索引更好。

基于此,如果我想要text_pattern_ops在列上使用运算符类(例如)的索引并且还希望该列是唯一的,那么case 2下面会更好,因为它可以使用单个索引完成上述操作。而case 1会因为唯一约束而自动创建一个索引,而另一个因为我需要不同的运算符类而自动创建?

情况1:

CREATE TABLE book (
   id SERIAL PRIMARY KEY,
   name text NOT NULL,
   CONSTRAINT book_name_key UNIQUE (name)
);

CREATE INDEX book_name_like ON book (name text_pattern_ops);
Run Code Online (Sandbox Code Playgroud)

案例2:

CREATE TABLE book (
   id SERIAL PRIMARY KEY,
   name text NOT NULL
);

CREATE UNIQUE INDEX book_name_like ON book (name text_pattern_ops);
Run Code Online (Sandbox Code Playgroud)

postgresql index database-design unique-constraint

2
推荐指数
1
解决办法
2813
查看次数

AWS RDS PostgreSQL 转储/恢复 - 语法错误

我正在尝试将 postgresql 数据库从 EC2 实例导入到同一子网上的 RDS,到目前为止,我正在执行以下操作...

1) 转储 EC2 数据库:

pg_dump --host localhost --port 5432 -Fc --encoding='UTF8' -U postgres ProcessorDB > /home/jboss/proc_dump_jan15.dump
Run Code Online (Sandbox Code Playgroud)

2) 从 EC2 恢复:

psql -f /home/jboss/proc_dump_jan15.dump --host=blahrds.11938475.eu-west-1.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=ProcessorDB
Run Code Online (Sandbox Code Playgroud)

我能够连接到远程数据库,但出现以下错误:

psql:/home/jboss/proc_dump_jan15.dump:1: ERROR:  syntax error at or near "PGDMP"
LINE 1: PGDMP
             REVOKE ALL ON SCHEMA public FROM postgres;
        ^
GRANT
GRANT
psql:/home/jboss/proc_dump_jan15.dump:5: ERROR:  syntax error at or near ""
LINE 1:     'en'
        ^
psql:/home/jboss/proc_dump_jan15.dump:14: ERROR:  syntax error at or near ""
LINE 1:     'free',
        ^ …
Run Code Online (Sandbox Code Playgroud)

postgresql aws postgresql-9.3 amazon-rds

2
推荐指数
1
解决办法
7424
查看次数

READ COMMITTED 是否总是在序列化失败后重新开始而 SERIALIZABLE 只是失败?

PostgreSQL Concurrency With MVCC 页面上,它说:

知道你在想什么:同时更新同一行的两个事务怎么样?这就是事务隔离级别的用武之地。Postgres 基本上支持两种模型,允许您控制如何处理这种情况。默认值 READ COMMITTED 在初始事务完成后读取行,然后执行语句。如果行在等待时发生更改,它基本上会重新开始。例如,如果您使用 WHERE 子句发出 UPDATE,则 WHERE 子句将在初始事务提交后重新运行,如果仍然满足 WHERE 子句,则执行 UPDATE。

文件似乎表明,提交读仍然受到故障,应予以重审。

可以将 READ COMMITTED 设置为以与 SERIAZLIZABLE 相同的原子性无限期重试吗?

postgresql performance version-control serialization postgresql-performance

2
推荐指数
1
解决办法
435
查看次数

哪个更有效:文本 (765) 或 varchar (765) 来存储自由格式的可搜索描述?

编辑:转述问题 - 我在什么时候从 varchar 切换到 text 并返回?

关于这个问题的一点背景。假设我们有 sales_orders 表,我们希望能够在订单上保留一个带有客户或销售代表评论的注释字段。它需要是可搜索的LIKE "%goldfinger's gun%"我们知道我们不会在字段中存储“战争与和平”,但同时它应该足够大以处理一两句话。

那么哪个选项是:

  • 读取速度更快?
  • 更擅长存储数据?
  • 更适合全文搜索?
  • 索引?

假设 MySQL(InnoDB) 或 PostgreSQL 用例

mysql postgresql full-text-search varchar

2
推荐指数
2
解决办法
1755
查看次数