Postgresql 如何将Access key和Secret key外壳变量传递给Redshift Copy命令
我试图通过SQL脚本使用Redshift Copy命令,为此我需要通过shell变量传递访问密钥和密钥。但是由于Redshift Copy命令的格式,我无法传递shell变量Postgresql 如何将Access key和Secret key外壳变量传递给Redshift Copy命令,postgresql,shell,amazon-s3,amazon-redshift,Postgresql,Shell,Amazon S3,Amazon Redshift,我试图通过SQL脚本使用Redshift Copy命令,为此我需要通过shell变量传递访问密钥和密钥。但是由于Redshift Copy命令的格式,我无法传递shell变量 COPY ${REDSHIFT_SCHEMA_NAME}.${REDSHIFT_TABLE_NAME} FROM ${S3_SOURCE} credentials 'aws_access_key_id=${AWS_ACCESS_KEY_ID};aws_secret_access_key=${AWS_SECRET_ACC
COPY ${REDSHIFT_SCHEMA_NAME}.${REDSHIFT_TABLE_NAME} FROM ${S3_SOURCE} credentials 'aws_access_key_id=${AWS_ACCESS_KEY_ID};aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}' delimiter '${DELIMITER}' COMPUPDATE OFF STATUPDATE OFF;
我面临的问题是AWS_SECRET_ACCESS_KEY和AWS_ACCESS_KEY_ID无法解决,因为它们都在一个引号中
关于将命令用作
COPY ${REDSHIFT_SCHEMA_NAME}.${REDSHIFT_TABLE_NAME_BACKLOG} FROM ${S3_SOURCE} credentials aws_access_key_id='${AWS_ACCESS_KEY_ID}';aws_secret_access_key='${AWS_SECRET_ACCESS_KEY}' delimiter '${DELIMITER}' COMPUPDATE OFF STATUPDATE OFF;
复制命令的格式不正确。
还有其他解决方案吗?亚马逊提供了非常好的文档。 我通过谷歌搜索找到了你想要的:“红移shell副本” 下面是一篇带有工作shell脚本的文章: 我用过这个,它对我有用:
#!/bin/bash
set -eu
AWS_ACCESS_KEY_ID='my_access_key'
AWS_SECRET_ACCESS_KEY='my_secret_access_key'
REDSHIFT_SCHEMA_NAME='redshift_schema_name'
REDSHIFT_TABLE_NAME_BACKLOG='redshift_table_name_backlog'
S3_SOURCE='s3_source'
DELIMITER='delimiter'
cmd="COPY ${REDSHIFT_SCHEMA_NAME}.${REDSHIFT_TABLE_NAME_BACKLOG} FROM ${S3_SOURCE} credentials aws_access_key_id='${AWS_ACCESS_KEY_ID}';aws_secret_access_key='${AWS_SECRET_ACCESS_KEY}' delimiter '${DELIMITER}' COMPUPDATE OFF STATUPDATE OFF;"
echo $cmd
我正在寻找的是将shell变量替换到脚本文件中,这些变量不在脚本文件中解析,而在Bash上直接使用它们解析。您可以提供整个shell脚本吗?我有java代码,它将属性文件作为输入,脚本文件作为输入,并执行sql查询。我可以通过属性文件传递变量。由sql脚本文件访问,并作为'aws_access_key_id=${aws_access_key_id};aws_secret_access_key=${aws_secret_access_key}在单引号中无法从属性文件解析变量一种方法可以是COPY_CREDENTIAL_PREFIX=\'aws_access_key_id=XXXXX';“aws_secret_access_key=XXXXX\”并使用${COPY_CREDENTIAL_PREFIX}总之,我试图避免这种方法。如果您使用带有两个文件输入的Java,为什么不使用模板引擎而不是shell替换呢?