我正在尝试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)
关于如何让这些命令行参数为我工作的任何想法?
是否可以一次性从表中删除所有NOT NULL约束?
我有一个包含很多NOT NULL约束的大表,我正在寻找比单独删除它们更快的解决方案.
是否可以定义默认情况下创建新表的模式?(由"不合格的表名称"引用.)
我已经看到了在Postgres中使用"搜索路径"的一些细节,但我认为它只在检索数据时有效,而不是创建.
我有一堆SQL脚本,它们创建了许多表.我没有修改脚本,而是希望默认情况下在特定模式中设置数据库创建表 - 当它们具有非限定名称时.
这可能吗?
我正在建立各种排队机制.有需要处理的数据行和状态标志.我正在使用一个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
我试图从表中获取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) 在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) 我在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
我可以psql像这样调用:
psql postgres://...
Run Code Online (Sandbox Code Playgroud)
如何使用pg_dump格式的连接字符串postgres://...?
比将URI分为主机,帖子,用户名和密码更方便.
有这个语法吗?
我有一个books带有returned_date列的表.我希望看到过去一周发生的所有图书的结果.
有什么想法吗?我尝试做一些日期数学,但Postgres对我的尝试并不满意.
我在从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
postgresql ×10
sql ×3
for-loop ×2
plpgsql ×2
arrays ×1
command-line ×1
concurrency ×1
constraints ×1
datetime ×1
indexing ×1
linux ×1
notnull ×1
psql ×1
random ×1
schema ×1
search-path ×1
sql-drop ×1
timezone ×1