Questions tagged «postgresql»

PostgreSQL的所有版本。如果该上下文很重要,请添加其他特定于版本的标记,例如postgresql-11。

6
如何在PostgreSQL中使用VALUES创建临时表
我正在学习PostgreSQL,并试图弄清楚如何创建一个临时表或WITH声明来代替常规表,以进行调试。 我查看了CREATE TABLE的文档,它说VALUES可以用作查询,但没有给出示例。VALUES其中链接的子句的文档也没有示例吗? 因此,我编写了一个简单的测试,如下所示: DROP TABLE IF EXISTS lookup; CREATE TEMP TABLE lookup ( key integer, val numeric ) AS VALUES (0,-99999), (1,100); 但是PostgreSQL(9.3)抱怨 “ AS”处或附近的语法错误 我的问题是: 我该如何修正以上陈述? 我如何适应它的使用WITH block? 提前致谢。

7
存在(选择1…)vs存在(选择*…)一个或另一个?
每当我需要检查表中是否存在某些行时,我总是总是写如下条件: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT * -- This is what I normally write FROM another_table WHERE another_table.b = a_table.b ) 其他人这样写: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT 1 --- This nice '1' is what I have seen other people use FROM another_table …

2
在PostgreSQL中优化批量更新性能
在Ubuntu 12.04上使用PG 9.1。 目前,我们最多需要24小时才能在数据库上运行大量的UPDATE语句,其形式为: UPDATE table SET field1 = constant1, field2 = constant2, ... WHERE id = constid (我们只是覆盖由ID标识的对象的字段。)这些值来自外部数据源(尚未存在于表的DB中)。 该表每个都有少量索引,没有外键约束。直到结束都不会进行COMMIT。 导入pg_dump整个数据库需要2小时。这似乎是我们应该合理定位的基准。 缺少生成自定义程序以某种方式为PostgreSQL重新构造数据集以重新导入的方法,我们是否可以做些什么使批量UPDATE性能更接近于导入?(这是我们认为日志结构的合并树可以很好处理的一个区域,但是我们想知道PostgreSQL中是否可以做任何事情。) 一些想法: 删除所有非ID索引并随后进行重建? 增加checkpoint_segments,但这实际上有助于持续的长期吞吐量吗? 使用这里提到的技术?(将新数据作为表加载,然后“合并”在新数据中找不到ID的旧数据) 基本上,有很多事情可以尝试,我们不确定最有效的是什么,或者我们是否忽略了其他事情。我们将在接下来的几天中进行实验,但我们也想在这里提出问题。 我确实在表上有并发负载,但是它是只读的。

4
在实时数据库上运行pg_dump是否会产生一致的备份?
我有一个不断修改的3GB数据库,我需要在不停止服务器的情况下进行备份(Postgres 8.3)。 我的pg_dump运行5分钟。如果在此过程中修改了数据怎么办?我可以获得一致的备份吗?我不想找出灾难发生的时间。 Postgres文档http://www.postgresql.org/docs/8.3/static/app-pgdump.html对此没有任何说明。
37 postgresql 

5
如何将数据(文件)插入PostgreSQL bytea列?
这个问题与bytea v。oid v。blobs v。大物体等无关。 我有一个包含主键integer字段和bytea字段的表。我想在该bytea字段中输入数据。据推测,这可以通过一种PL/语言来完成,PL/Python将来我可能会考虑这样做。 在仍在测试和试验中,我只想使用“标准” SQL语句从文件(服务器上)插入数据。我知道,只有在服务器上具有写权限的管理员才能以我想要的方式插入数据。我现在不担心这一点,因为用户bytea目前不会插入数据。我已经搜索了各种StackExchange网站,PostgreSQL档案库和Internet,但没有找到答案。 编辑: 这从2008年的讨论意味着什么,我想做的事情是不可能的。那么如何使用bytea字段? 编辑: 这从2005年类似的问题仍然没有答案。 解决:所提供的细节在这里上的psycopg网站,我用Python编写的解决方案提供了基础。也可以使用将二进制数据插入到bytea列中PL/Python。我不知道是否可以使用“纯” SQL。

2
PostgreSQL排除使用错误:数据类型整数没有默认的运算符类
在PostgreSQL 9.2.3中,我试图创建此简化表: CREATE TABLE test ( user_id INTEGER, startend TSTZRANGE, EXCLUDE USING gist (user_id WITH =, startend WITH &&) ); 但是我得到这个错误: ERROR: data type integer has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default operator class …

2
无法使用CREATE或REPLACE重命名PostgreSQL视图中的列
在PostreSQL 8.3中,我试图创建一个视图,该视图看起来就像一个现有表,但是具有不同的列名。 这有效 CREATE OR REPLACE VIEW gfam.nice_builds AS SELECT (family_tree.family_tree_id) as x, family_tree.family_tree_name, family_tree.family_tree_description FROM gfam.family_tree; 上面复制了family_tree表,但是以下尝试失败: CREATE OR REPLACE VIEW gfam.nice_builds AS SELECT (family_tree.family_tree_id) as x, family_tree.family_tree_name, family_tree.family_tree_description FROM gfam.family_tree; 错误:无法更改视图列“ family_tree_id”的名称 如何重命名列?
37 postgresql 

1
在同一查询中具有不同条件的Postgres计数
编辑 Postgres 9.3 我正在处理具有以下架构的报告:http : //sqlfiddle.com/#!15/fd104/2 当前查询工作正常,如下所示: 基本上它是一个3表内部联接。我没有进行此查询,但是留下查询的开发人员想修改查询。如您所见,TotalApplication只计算基于的总申请量a.agent_id。您可以totalapplication在结果中看到该列。我要删除的是并将其更改totalapplication为新的两列。我想添加completedsurvey和partitalsurvey列。所以基本上这部分将成为 SELECT a.agent_id as agent_id, COUNT(a.id) as CompletedSurvey FROM forms a WHERE a.created_at >= '2015-08-01' AND a.created_at <= '2015-08-31' AND disposition = 'Completed Survey' GROUP BY a.agent_id 我刚刚添加了,AND disposition = 'Completed Survey'但是我需要另一列partialsurvey具有相同查询的列,completedsurvey唯一的区别是 AND disposition = 'Partial Survey' 和 COUNT(a.id) as PartialSurvey 但是我不知道将查询放在哪里或查询的样子,所以最终输出包含这些列 agent_id, …

2
了解“位图堆扫描”和“位图索引扫描”
我将通过以下示例来解释我的误解。 我不明白基本面的Bitmap Heap Scan Node。考虑查询SELECT customerid, username FROM customers WHERE customerid < 1000 AND username <'user100';的计划是这样的: Bitmap Heap Scan on customers (cost=25.76..61.62 rows=10 width=13) (actual time=0.077..0.077 rows=2 loops=1) Recheck Cond: (((username)::text < 'user100'::text) AND (customerid < 1000)) -> BitmapAnd (cost=25.76..25.76 rows=10 width=0) (actual time=0.073..0.073 rows=0 loops=1) -> Bitmap Index Scan …
36 postgresql  index 


2
WHERE子句是否按其编写顺序应用?
我正在尝试优化查询到一个大表(3700万行)的查询,并且对在查询中执行操作的顺序有疑问。 select 1 from workdays day where day.date_day >= '2014-10-01' and day.date_day <= '2015-09-30' and day.offer_id in ( select offer.offer_day from offer inner join province on offer.id_province = province.id_province inner join center cr on cr.id_cr = province.id_cr where upper(offer.code_status) <> 'A' and province.id_region in ('10' ,'15' ,'21' ,'26' ,'31' , …

5
如何在Postgresql中有效地将数百万行从一个表复制到另一个表?
我有两个数据库表。其中包含数亿条记录。让我们称之为那个history。另一条是每天计算的,我想将其所有记录复制到history一条中。 我所做的就是跑步: INSERT INTO history SELECT * FROM daily 它成功完成了一段时间,但随着记录数量的不断增长,它开始变得越来越慢。现在,我大约有200万条记录需要通过一次操作从daily到进行复制,history而完成它花费的时间太长。 是否有另一种更有效的方法将数据从一个表复制到另一个表?
36 postgresql 

6
“存储过程”和“存储函数”之间有什么区别?
因此,该问题的评论提到,PostgreSQL中的“存储过程”和“存储功能”略有不同。 该评论链接到Wikipedia文章,但其中一些似乎不适用(例如,可以在SELECT声明中使用它们)。 该语法本身似乎有点混乱: CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$ BEGIN [...] END; $emp_stamp$ LANGUAGE plpgsql; CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); 您创建了一个,FUNCTION但将其称为PROCEDURE。 那么这两者有什么区别?


4
如何找出PostgreSQL查询的有效距离?
我对我的SELECT ... INTO查询实际上将处理多少行有一个不错的想法(例如,我知道将实现多少行)。 我知道Postgres不会告诉我百分比完整性,有没有办法(深埋在日志,系统表或其他方式中)我可以找出有多少行已被泵送到目标表中或已被SELECT查询读取?
35 postgresql 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.