Как сохранить атрибут Redshift SELECT в переменной скрипта

Я хочу создать сценарий для автоматизации некоторых процессов с помощью 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_proceso
------------
      2
(1 row)

Затем я хотел бы использовать его в качестве значения для вставки во второе предложение, заменив «X», но я не знаю, как сохранить в переменной, а затем повторно использовать вывод первого предложения.

Любое предложение?

П. В другом вопросе показано, как это сделать в уникальном предложении, но я необходимо сохранить значение для будущего использования.


person EMBorque    schedule 11.01.2016    source источник


Ответы (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:

невыровненный формат записывает все столбцы строки в одну строку, разделенную текущим активным разделителем полей. Это полезно для создания вывода, который может быть предназначен для чтения другими программами (например, в формате с разделителями табуляции или запятыми).

person Dmitry Savinkov    schedule 11.01.2016
comment
Он работал с -t. Это дает мне только ценность. Спасибо !!! - person EMBorque; 12.01.2016