我在 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)
谢谢!
我有一个包含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 怎么样?我做了一些谷歌搜索,但找不到任何真正相关的东西。
如何删除角色成员?我的角色名称tester是角色postgres 的成员(我不想要)。如何删除此会员资格?
Role name | Attributes | Member of
-----------+------------------------------------------------+------------
tester | | {postgres}
postgres | Superuser, Create role, Create DB, Replication | {}
Run Code Online (Sandbox Code Playgroud) 我有一个功能:
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。
函数是此处接受的答案的一个版本:
我有一个经典的 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什么区别?如何将这两个模式等同起来?
我遇到了一个奇怪的地方,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) 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 数据库从 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 Concurrency With MVCC 页面上,它说:
知道你在想什么:同时更新同一行的两个事务怎么样?这就是事务隔离级别的用武之地。Postgres 基本上支持两种模型,允许您控制如何处理这种情况。默认值 READ COMMITTED 在初始事务完成后读取行,然后执行语句。如果行在等待时发生更改,它基本上会重新开始。例如,如果您使用 WHERE 子句发出 UPDATE,则 WHERE 子句将在初始事务提交后重新运行,如果仍然满足 WHERE 子句,则执行 UPDATE。
该文件似乎表明,提交读仍然受到故障,应予以重审。
可以将 READ COMMITTED 设置为以与 SERIAZLIZABLE 相同的原子性无限期重试吗?
postgresql performance version-control serialization postgresql-performance
编辑:转述问题 - 我在什么时候从 varchar 切换到 text 并返回?
关于这个问题的一点背景。假设我们有 sales_orders 表,我们希望能够在订单上保留一个带有客户或销售代表评论的注释字段。它需要是可搜索的LIKE "%goldfinger's gun%"我们知道我们不会在字段中存储“战争与和平”,但同时它应该足够大以处理一两句话。
那么哪个选项是:
假设 MySQL(InnoDB) 或 PostgreSQL 用例
postgresql ×10
performance ×2
amazon-rds ×1
array ×1
aws ×1
datatypes ×1
functions ×1
index ×1
mysql ×1
schema ×1
upsert ×1
varchar ×1