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

时间:2016-01-11 18:26:21

标签: bash postgresql amazon-redshift psql

我想创建一个脚本来使用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中,它显示了如何在一个唯一的句子中执行此操作,但我需要保存该值以供将来使用。

1 个答案:

答案 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   例如,制表符分隔或逗号分隔格式。)