小编Erw*_*ter的帖子

PostgreSQL psql终端命令

我正在尝试psql很好地格式化并遵循这里的文档.现在,每当我对包含大量列的表进行查询时,无论我的屏幕有多大,每一行都会溢出到下一行并产生一整页不可读的垃圾.

文档(链接在上面)说有一种方法可以很好地对齐列以获得更可读的输出.

通常,首先psql,我输入:

PSQL

并按Enter键.现在我正在尝试:

psql\pset格式对齐

并得到一个错误:

could not change directory to "/root"
psql: warning: extra command-line argument "aligned" ingored
psql: FATAL: Indent authentication failed for user "format"
Run Code Online (Sandbox Code Playgroud)

关于如何让这些命令行参数为我工作的任何想法?

linux postgresql command-line psql

48
推荐指数
2
解决办法
18万
查看次数

如何一次性从PostgreSQL表中删除所有NOT NULL约束

是否可以一次性从表中删除所有NOT NULL约束?

我有一个包含很多NOT NULL约束的大表,我正在寻找比单独删除它们更快的解决方案.

sql postgresql constraints notnull sql-drop

48
推荐指数
4
解决办法
5万
查看次数

search_path如何影响标识符解析和"当前架构"

是否可以定义默认情况下创建新表的模式?(由"不合格的表名称"引用.)

我已经看到了在Postgres中使用"搜索路径"的一些细节,但我认为它只在检索数据时有效,而不是创建.

我有一堆SQL脚本,它们创建了许多表.我没有修改脚本,而是希望默认情况下在特定模式中设置数据库创建表 - 当它们具有非限定名称时.

这可能吗?

postgresql schema search-path database-table

46
推荐指数
2
解决办法
3万
查看次数

Postgres中的Atomic UPDATE .. SELECT

我正在建立各种排队机制.有需要处理的数据行和状态标志.我正在使用一个update .. returning条款来管理它:

UPDATE stuff
SET computed = 'working'
WHERE id = (SELECT id from STUFF WHERE computed IS NULL LIMIT 1)
RETURNING * 
Run Code Online (Sandbox Code Playgroud)

嵌套的选择部分是否与更新锁相同,或者我是否有竞争条件?如果是这样,内部选择需要是select for update吗?

postgresql concurrency multithreading race-condition transaction-isolation

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

Postgres FOR LOOP

我试图从表中获取25个15,000个ID的随机样本.而不是每次都手动按下运行,我正在尝试循环.我完全理解的不是Postgres的最佳用法,但它是我的工具.这是我到目前为止:

for i in 1..25 LOOP
   insert into playtime.meta_random_sample
   select i, ID
   from   tbl
   order  by random() limit 15000
end loop
Run Code Online (Sandbox Code Playgroud)

random postgresql stored-procedures for-loop plpgsql

46
推荐指数
3
解决办法
14万
查看次数

在plpgsql中循环遍历数组维度

在plpgsql中,我想从二维数组中逐个获取数组内容.

DECLARE
  m varchar[];
  arr varchar[][] := array[['key1','val1'],['key2','val2']];
BEGIN
  for m in select arr
  LOOP
    raise NOTICE '%',m;
  END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

但上面的代码返回:

{{key1,val1},{key2,val2}}
Run Code Online (Sandbox Code Playgroud)

在一条线上.我希望能够循环并调用另一个函数,该函数采用如下参数:

another_func(key1,val1)
Run Code Online (Sandbox Code Playgroud)

arrays postgresql for-loop plpgsql multidimensional-array

45
推荐指数
1
解决办法
10万
查看次数

优化GROUP BY查询以检索每个用户的最新记录

我在Postgres 9.2中有下表(简化形式)

CREATE TABLE log (
    log_date DATE,
    user_id  INTEGER,
    payload  INTEGER
);
Run Code Online (Sandbox Code Playgroud)

它每个用户和每天最多包含一条记录.每天将有大约500,000条记录,为期300天.每个用户的running_total总是在增加.

我想在特定日期之前有效地检索每个用户的最新记录.我的查询是:

SELECT user_id, max(log_date), max(payload) 
FROM log 
WHERE log_date <= :mydate 
GROUP BY user_id
Run Code Online (Sandbox Code Playgroud)

这非常慢.我也尝试过:

SELECT DISTINCT ON(user_id), log_date, payload
FROM log
WHERE log_date <= :mydate
ORDER BY user_id, log_date DESC;
Run Code Online (Sandbox Code Playgroud)

具有相同的计划,同样缓慢.

到目前为止,我在user_msg_log(aggr_date)上有一个索引,但没有多大帮助.我应该用什么其他索引来加快速度,还是以任何其他方式实现我的目标?

sql postgresql indexing greatest-n-per-group postgresql-performance

45
推荐指数
3
解决办法
3万
查看次数

如何使用连接uri/url的pg_dump?

我可以psql像这样调用:

psql postgres://...
Run Code Online (Sandbox Code Playgroud)

如何使用pg_dump格式的连接字符串postgres://...
比将URI分为主机,帖子,用户名和密码更方便.

有这个语法吗?

postgresql connection-string

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

你如何找到过去一周发生的结果?

我有一个books带有returned_date列的表.我希望看到过去一周发生的所有图书的结果.

有什么想法吗?我尝试做一些日期数学,但Postgres对我的尝试并不满意.

sql postgresql date-arithmetic

43
推荐指数
2
解决办法
3万
查看次数

PostgreSQL date()带有时区

我在从Postgres正确选择日期时遇到问题 - 它们以UTC格式存储,但未正确转换为Date()函数.

将时间戳转换为日期会给我错误的日期,如果它超过太平洋标准时间下午4点.

2012-06-21应该是2012-06-20这种情况.

starts_at列数据类型是timestamp without time zone.这是我的疑问:

无需转换为PST时区:

Select starts_at from schedules where id = 40;

      starts_at      
---------------------
 2012-06-21 01:00:00
Run Code Online (Sandbox Code Playgroud)

转换给出了这个:

Select (starts_at at time zone 'pst') from schedules where id = 40;
        timezone        
------------------------
 2012-06-21 02:00:00-07
Run Code Online (Sandbox Code Playgroud)

但是都没有转换为时区中的正确日期.

postgresql timezone datetime rails-postgresql postgresql-9.1

43
推荐指数
3
解决办法
7万
查看次数