使用Shell脚本连接到Postgres(Redshift)数据库和表

时间:2015-06-17 16:45:23

标签: bash postgresql shell amazon-redshift

我需要帮助理解一些shell脚本以连接到Redshift数据库,因为Bash / shell对我来说并不熟悉。

  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  
    
  4. 由于ATOMIC位于此区块的末尾,我会假设它说明了块或其他内容的结束,但我不了解文档或其他任何内容。

    1. 如何将SELECT语句的返回值分配给变量并将其回显到电子邮件中?我有一行发送电子邮件,但不知道如何将SELECT查询中返回的值分配到变量中:

      $ echo "hello world" | mail -s "Test" simply@coding.com
      

1 个答案:

答案 0 :(得分:0)

  1. 我不确定你在这里尝试做什么。据我所知,pgpass不会包含您的凭据,除非您自己将它们放在那里。这听起来像是命令这样做。

  2. <<-不是评论。它代表了一个&#39; Here文档&#39;请参阅:https://en.wikipedia.org/wiki/Here_document#Unix-Shells

  3. 关于<<-ATOMIC,请参阅上述链接。 \x告诉psql格式化SELECT

  4. 的输出
  5. OUTPUT = `psql -U username -h host -d dbname tablename -c $PSQL_CMD'
    echo $OUTPUT | mail -s "Test" simply@coding.com