Как да запишете атрибут 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, който търся, във формат като този:

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