我想创建一个脚本来使用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);"
在第一句话中,我得到一个唯一的值,即我正在寻找的ID,格式如下:
id_proceso
------------
2
(1 row)
然后我想用它作为插入第二句的值,替换“X,但我不知道如何保存到变量然后重用第一句的输出。
有什么建议吗?
Pd积。在其他question中,它显示了如何在一个唯一的句子中执行此操作,但我需要保存该值以供将来使用。
答案 0 :(得分:4)
检查 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
cat sample.txt
的结果将是:
id_process
------------
2
(1 row)
如果您想从SELECT
语句中获得纯值,请考虑以上示例中的以下参数:
<强> \t
强>:
切换输出列名称标题和行计数的显示 页脚。此命令相当于
\pset tuples_only
,而且是 为方便起见。
<强> \pset format unaligned
强>:
未对齐格式将一行中的所有列写入一行,用。分隔 当前活动的字段分隔符。这对于创建很有用 可能打算被其他程序读入的输出(for 例如,制表符分隔或逗号分隔格式。)