当表列包含保留关键字时,AWS Redshift中使用pg_dump的表转储失败

时间:2017-09-05 23:41:25

标签: amazon-redshift

我的目标是为数据库中的所有表转储表结构,而不包含任何内容。

我有一些包含保留关键字的Redshift表。如果我尝试转储它们,我会收到此错误:

pg_dump -sc --quote-all-identifiers -h example.com -p 5439 -d redacted -U redacted --table public.mytable > ./blah.txt
pg_dump: [archiver (db)] query failed: ERROR:  syntax error at or near "stdout"
LINE 1: ... "status", "date") TO stdout;
                                 ^
pg_dump: [archiver (db)] query was: COPY "public"."mytable" ("status", "date") TO stdout;

如果我尝试使用pg_dump -sc --quote-all-identifiers -h example.com -p 5439 -d redacted -U redacted --table public.mytable > ./blah.txt仅导出表结构,则命令会成功,但结果文件包含此create table语句:

CREATE TABLE "mytable" (
);

除了新的一行之外,括号内没有任何内容。

在Ubuntu 16.04上,pg_dump版本为pg_dump (PostgreSQL) 9.5.8

这个问题影响了几个不同的表,这些表中的一个共同点是psql reserved words list上有以单词命名的列。也许对于为什么会发生这种情况还有另一种解释,所以我很想听听问题的其他理论。

虽然它会很好,但我无法更改表格中列的名称。

1 个答案:

答案 0 :(得分:4)

强烈建议您不要将pg_dump用于Redshift。请尝试使用UNLOAD命令。 https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html