标签: postgresql

跨多个模式查询,直到执行时间未知

我有多个需要查询的模式。模式是事先未知的,例如:

  • U111
  • U222
  • U333

我需要从这些模式中的每一个中的特定表中选择这三个模式。我可以将这个查询放在这三个模式中吗?如果是这样,我如何查询它们?请记住,我不会提前知道模式名称,因此需要动态构建它们。

schema postgresql dynamic-sql plpgsql

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

在 PostgreSQL 中添加无符号 256 位整数

我想知道是否有任何方法可以在 PostgreSQL 中执行以下操作:

UPDATE cryptotable SET work = work + 'some big hexadecimal number'
Run Code Online (Sandbox Code Playgroud)

其中 work 是一个无符号的 256 位数字。现在我的列是一个字符变化(64)列(十六进制表示),但如果它让我执行上述操作,我很乐意切换到另一种数据类型。

如果 vanilla PostgreSQL 无法实现,是否有可以帮助我的扩展?

(我也将此发布到 pgsql-hackers,因此请查看那里的线程以获取更多想法。)

postgresql pgcrypto cryptography

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

为单连接使用调整 Postgres?还是 postgres 错误的工具?

拇指的任何规则work_memmaintenance_work_memshared_buffer等,为的是不预期的并发连接,并且正在做大量的聚集功能的数据库?

我是一名社会科学家,不希望将 Postgres 用作供多个用户共享的数据库,而是作为我自己的工具来操作海量数据集(我有 50 亿条交易记录(csv 中为 600gb)并想退出唯一用户对、估计单个用户的聚合等)。

我可以在网上找到的所有关于调优的建议(这个这个这个等等)都是为那些预计会有大量并发连接的人写的。对于单独使用数据库进行数据操作的人来说,任何人都有基本的经验法则吗?

更新: - 这也意味着几乎没有写入,除了根据主表中的选择创建新表。(显然这很重要——谢谢欧文!)

更新 2: - 我在 Windows 8 VM 上使用 16gb ram、SCSI VMware HD 和 3 个内核(如果这很重要)。

postgresql concurrency database-tuning configuration

6
推荐指数
1
解决办法
451
查看次数

加入并返回数据时如何从表中删除行?

我有两个疑问:

第一个如下:

SELECT * 
FROM batch bp 
  INNER JOIN sender_log sl ON sl.id=bp.log_id 
    AND bp.protocol='someprotocol'
Run Code Online (Sandbox Code Playgroud)

第二个查询用于删除行:

delete from batch where protocol='someprotocol'
Run Code Online (Sandbox Code Playgroud)

我知道在 postgres 中我们有RETURNING *来返回已删除的行。我想要实现的是删除行并在一个查询中返回它们。我怎样才能做到这一点?

postgresql join delete select

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

pg_dump 没有完成

我正在尝试备份我们的 postgres 数据库 (8.4.17),它的大小约为 25GB。

pg_dump database_name > database_db_dump_2014-05-05.sql
Run Code Online (Sandbox Code Playgroud)

不幸的是,备份在大约 600MB 后停止,并且不会继续。尝试转储特定表 (fb_crawler_event) 时它总是停止。我能够使用--tableswtich成功转储所有其他表。我已经停止了可以与数据库交互的任何其他进程。


重启数据库后的服务器日志(对我来说看起来没问题):

2014-05-05 14:34:46 CEST LOG:  all server processes terminated; reinitializing
2014-05-05 14:34:46 CEST LOG:  database system was interrupted; last known up at 2014-05-05 14:32:50 CEST
2014-05-05 14:34:46 CEST LOG:  database system was not properly shut down; automatic recovery in progress
2014-05-05 14:34:46 CEST LOG:  record with zero length at 1A1/AD6A78C0
2014-05-05 14:34:46 CEST LOG:  redo is not required
2014-05-05 14:34:47 CEST LOG:  database system …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-8.4

6
推荐指数
1
解决办法
8396
查看次数

查询以查找循环引用

我有两张桌子

ID  Task
1   1
2   2
3   3
4   4

Col1  depend
2     3
2     4
3     1
4     2
Run Code Online (Sandbox Code Playgroud)

IDCol1通过 FK 约束相关。我想找出所有循环引用。这里IDCol1仅用于组合来自 2 个表的行,例如:

Task 1 can start anytime.
Task 2 can start only after completion of 3, 4 etc

1 –
2 – 3, 4, 1, 2   -- for 2 there is circular dependency
3 – 1
4 – 2, 3, 4      -- also circular dependency
Run Code Online (Sandbox Code Playgroud)

案例2:

Col1  depend
2 …
Run Code Online (Sandbox Code Playgroud)

postgresql cte postgresql-9.2 recursive

6
推荐指数
1
解决办法
3676
查看次数

索引大型静态数据集

我目前的情况是这样的:我在一个平面csv文件中有 3.28 亿行数据。不是最优的。我希望能够查询这些数据(我会更详细地解释)。Grep越来越累。这些数据是静态的,不会改变。

我是 PostgreSQL 的新手,正在我的 2010 MacBook Pro、2.4 GHz Intel Core 2 Duo、4 GB 1067 MHz DDR3 上处理这些数据。存储大小不是真正的问题,1TB 磁盘上的数据大约为 65GB,但读/写速度不是很好(不幸的是它不是 SSD)。我记得几年前我在 CS 研究中,索引可以帮助我提高查询速度,我正在阅读如何最好地做到这一点。

我为什么要使用 PostgreSQL?同辈压力。不是真的,但让我们继续吧。我在 OSX 10.9.2 上运行 PostgreSQL 9.3.4。

现在,我正在尝试做的事情。数据包括日期和时间信息,跨越大约 10 个月。例如,我希望能够:

  1. 查找并汇总特定用户和/或多个用户的数据集中所有星期一的所有活动
  2. 看看夏季几周与冬季几周之间的差异
  3. 几个月之间;和
  4. 一天中的小时数等。

我感兴趣的主要是与时间戳相关的摘要。

除了timestamp、auserID和 a之外,每个数据记录还包括servID。在另一个文件(存储在另一个表中)中,每个文件servID都作为 X 和 Y 值链接到一个位置。我有兴趣在地图上显示这些位置,因此我将使用 将这些位置导出到绘图matlab,为许多用户汇总或一次关注特定用户。

所有值都是重复的,即大约有 700.000 uniqueuserIDs和 1500 unique servIDs。时间戳也不是唯一的,分辨率只有秒,所以有重复的时间戳。

到目前为止,我已经创建了两个表,一个包含一小部分测试数据和 XY 位置表:

create table test (userID varchar, junk1 varchar, 
     date …
Run Code Online (Sandbox Code Playgroud)

postgresql index-tuning postgresql-9.3

6
推荐指数
1
解决办法
1019
查看次数

在加载数据之前或之后创建索引

我有一种情况需要在 Postgres 中创建一个表并添加大约 300 万行。目前,我正在加载所有数据向一个字段添加索引,但我想知道加载数据之前(在创建表时)添加索引是否更好、更糟或中性。

当索引应该添加到 Postgres 中的表时,什么被认为是最佳实践?Postgres 是否在事务期间暂停索引?

postgresql

6
推荐指数
1
解决办法
3277
查看次数

恢复到现有 pg 数据库的更好方法

我们要恢复到现有的 9.3 pg 数据库。我们最终做的是:

1) delete the database and recreate again, 
2) use pg_restore to restore. 
3) reboot the ubuntu server to allow rails app to pick up the new database. 
Run Code Online (Sandbox Code Playgroud)

我们尝试了以下 pg_restore 命令,但它没有恢复到现有数据库:

$pg_restore --dbname=existing_database --verbose /home/myname/dbbackup.backup
Run Code Online (Sandbox Code Playgroud)

pg_restore 之后,existing_database 没有变化。是否有命令可以恢复到现有的 pg 数据库而无需像我们那样先删除它?我们必须使用命令行。非常感谢。

postgresql restore

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

在 Ubuntu 14.04 上安装 Postgis 扩展的问题

我有带有 Postgres 9.3 的 Ubuntu 14.04,我正在尝试安装 Postgis 扩展。我发现的最推荐和最直接的方法之一非常简单:

sudo apt-get install postgresql-contrib postgis postgresql-9.3-postgis-2.1
Run Code Online (Sandbox Code Playgroud)

但是,这会引发“未满足的依赖项”错误:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies.

postgis : Depends: libgdal1h (>= 1.9.0) but …
Run Code Online (Sandbox Code Playgroud)

postgresql ubuntu postgis postgresql-9.3

6
推荐指数
1
解决办法
6663
查看次数