2015-06-17 100 views
0

我需要幫助理解連接到Redshift數據庫的shell腳本的某些部分,因爲我不熟悉Bash/shell。使用Shell腳本連接到Postgres(Redshift)數據庫和表

  1. 要使用pgpass,這是我需要獲得憑據嗎? :

    cat > ./.pgpass <<-CREDS 
    $HOSTNAME:$PORT_NUMBER:$DBNAME:$USERNAME:$PASSWORD 
    CREDS 
    
  2. 什麼是<<-?這是一條評論嗎?快速搜索說<<END是一個評論,但是是什麼不同於<<-CREDS

  3. 這與#2有些相關,<<-ATOMIC\x在這段代碼中的含義是什麼?

    $PSQL_CMD <<-ATOMIC 
    \x 
    SELECT column1 FROM $THETABLE WHERE column1='true'; 
    ATOMIC 
    

由於ATOMIC在這個塊的結尾中,我推測,它的聲明塊或某事的結束,但我不明白的文檔或任何東西。

  • 如何將SELECT聲明的返回值(多個)分配到一個變量,並將它顯示在電子郵件?我有一個線發送電子郵件,但不知道如何從SELECT查詢返回的值分配到一個變量:

    $ echo "hello world" | mail -s "Test" [email protected] 
    
  • 回答

    0
    1. 我不知道你在做什麼試圖在這裏做。據我所知,pgpass將不會包含您的憑據,除非您自己把它們放在那裏。這聽起來像是可能命令那樣做。

    2. <<-不是評論。它代表'Here document'參見:https://en.wikipedia.org/wiki/Here_document#Unix-Shells

    3. 關於<<-ATOMIC請參閱上面的鏈接。該\x告訴psql一起輸出從SELECT

    4. OUTPUT = `psql -U username -h host -d dbname tablename -c $PSQL_CMD' 
      echo $OUTPUT | mail -s "Test" [email protected] 
      
    格式化
    相關問題