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

Posted

技术标签:

【中文标题】如何将 Redshift SELECT 属性保存到脚本变量中【英文标题】:How to save a Redshift SELECT atribute into a script variable [duplicate] 【发布时间】:2016-04-16 04:05:28 【问题描述】:

我想创建一个脚本来使用 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,但是我不知道怎么存入一个变量,然后复用第一句的输出。

有什么建议吗?

P.D.在其他question 中,它显示了如何在一个独特的句子中执行此操作,但我需要保存该值以备将来使用。

【问题讨论】:

【参考方案1】:

检查 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

unaligned 格式将一行的所有列写入一行,以 当前活动的字段分隔符。这对创建很有用 可能打算被其他程序读入的输出(例如 例如,制表符分隔或逗号分隔的格式)。

【讨论】:

它与“-t”一起工作。它只给了我价值。谢谢!!!

以上是关于如何将 Redshift SELECT 属性保存到脚本变量中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 TIMESTAMP 转换为 VARCHAR 并将其保存到 Redshift 中的另一个表中?

如何在 python udf 中使用 select 查询进行 redshift?

S3 使用 COPY 到 Redshift:无法 COPY 到不存在的表中

是否可以将 CSV 上传到 redshift 并让它自动运行并导出保存的查询?

如何通过插入和更新为 Redshift 表规划 diststyle

PySpark 使用“覆盖”模式保存到 Redshift 表会导致删除表?