EMB*_*que 7 postgresql bash psql amazon-redshift
我想创建一个脚本来使用Redshift自动化某些进程.具体来说,我想找到一个带有SELECT的表的属性,然后在INSERT中使用它.我的脚本看起来像这样:
psql -h ... -c "SELECT id_process FROM process WHERE de_process = 'EMR'"
psql -h ... -c "INSERT INTO execution (id_process) values (X);"
Run Code Online (Sandbox Code Playgroud)
在第一句中,我得到一个唯一的值,我正在寻找的ID,格式如下:
id_proceso
------------
2
(1 row)
Run Code Online (Sandbox Code Playgroud)
然后我想用它作为插入第二句的值,替换"X,但我不知道如何保存到变量然后重用第一句的输出.
有什么建议吗?
PD在另一个问题中它显示了如何在一个独特的句子中做到这一点,但我需要保存值以供将来使用.
检查psql
选项,但示例脚本可以如下:
psql -h localhost -d testdb <<EOF
\out sample.txt
\pset border 1
WITH test_data AS ( SELECT 2 AS id_process)
SELECT id_process FROM test_data;
\out
EOF
Run Code Online (Sandbox Code Playgroud)
结果cat sample.txt
将是:
id_process
------------
2
(1 row)
Run Code Online (Sandbox Code Playgroud)
如果您只想从语句中获取纯值SELECT
,请考虑上面示例中的以下参数:
\t
:
切换输出列名称标题和行计数页脚的显示。该命令相当于并且
\pset tuples_only
是为了方便而提供的。
\pset format unaligned
:
未对齐格式将一行的所有列写入一行,并由当前活动的字段分隔符分隔。这对于创建可能旨在由其他程序读取的输出(例如,制表符分隔或逗号分隔格式)非常有用。