ShellScript中的PSQL COPY

时间:2016-09-16 07:35:29

标签: postgresql shell amazon-web-services amazon-s3 amazon-ec2

我正在编写一个从AWS S3获取数据(.csv文件)的shell脚本,将其本地下载到EC2 Linux AMI实例上,然后将数据复制到RDS PostGresql数据库。

我的Shell代码如下:

FILE="$(ls DB)"
PARAMETERFORDB= "'\\COPY table(x,y) FROM ''$FILE'' CSV HEADER'"

$(psql --host=XXXXX --port=XXXXX --username=XXXXX --password --dbname=XXXXX -c ${PARAMETERFORDB})

因此,当下载S3的数据时,我将文件的名称存储在FILE变量中(它是文件夹中的唯一文件,数据库查询后将删除该文件夹)。

我收到以下错误消息:

./shellTest.sh: line 21: '\COPY table(x,y) FROM ''14.9.2016.csv'' CSV HEADER': command not found
psql: option requires an argument -- 'c'
Try "psql --help" for more information.

我做错了什么?

1 个答案:

答案 0 :(得分:1)

在第

PARAMETERFORDB= "'\\COPY table(x,y) FROM ''$FILE'' CSV HEADER'"

删除=后的空格并删除一级单引号:

PARAMETERFORDB="\\COPY table(x,y) FROM '$FILE' CSV HEADER"

在调用psql的行中,将${PARAMETERFORDB}括在双引号中,因为它包含空格。