如何将Redshift SELECT属性保存到脚本变量中

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在另一个问题中它显示了如何在一个独特的句子中做到这一点,但我需要保存值以供将来使用.

Dmi*_*kov 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
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

未对齐格式将一行的所有列写入一行,并由当前活动的字段分隔符分隔。这对于创建可能旨在由其他程序读取的输出(例如,制表符分隔或逗号分隔格式)非常有用。