我使用"自定义"格式(-Fc)的pg_dump创建了数据库转储.此格式允许使用"jobs"选项(-j8)调用pg_restore.作业选项启动8个进程,并在10分钟内恢复数据库中的绝大多数关系.
我留下了4个进程.其中一个是物化视图的刷新,另外三个是应用于物化视图用作数据源的3个表的索引.索引根据pg_stat_activity"等待",可能是因为REFRESH物化视图仍在访问源表.
索引到位后,视图的刷新只需几分钟.因为索引在这期间没有到位,所以REFRESH我REFRESH在17小时后关闭了这个过程,这使得pg_restore失败了.
我怎么能够
REFRESH MATERIALIZED VIEW声明并将其扔进垃圾桶或任何其他完成工作的解决方案?
我有一个简单的表,该表缺少“某人”列的值。我想用id字段中的升序值填充先前值的NULL值,而不是降序值(过去的项目可能有所不同)。为了进行实验(我的实际查询要复杂得多),我不能简单地使用UPDATE查询来填充表,我必须将它作为SELECT来进行。
CREATE TABLE lag_test (id serial primary key, natural_key integer, somebody text);
INSERT INTO lag_test(natural_key, somebody)
VALUES (1, NULL), (1, 'Kirk'), (1, NULL), (2, 'Roybal'), (2, NULL), (2, NULL);
Run Code Online (Sandbox Code Playgroud)
示例代码创建一个像这样的表:
id natural_key somebody
-- ----------- --------
1 1 NULL
2 1 Kirk
3 1 NULL
4 2 Roybal
5 2 NULL
6 2 NULL
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有这个:
SELECT id,
natural_key,
COALESCE(somebody, lag(somebody) OVER (PARTITION BY natural_key)) somebody
FROM lag_test
ORDER BY natural_key, id;
Run Code Online (Sandbox Code Playgroud)
哪个返回:
id natural_key somebody
-- ----------- --------
1 1 …Run Code Online (Sandbox Code Playgroud) 我知道$*,$@,"$@"甚至${1+"@"}和他们的意思.
我需要从shell脚本访问EXACT命令行参数字符串.请注意示例中的引号.像"$ @"这样的东西保存参数但删除了引号,我看不出如何从中恢复.
例:
./my-shell.sh"1 2"3
我需要检索EXACT参数字符串而不进行任何处理:
"1 2"3
知道怎么做到这一点?