当表列包含保留关键字时,使用PG_DUMP使用PG_DUMP在AWS 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 "mytable" (
);

除了新线外,括号内什么都没有。

pg_dump版本是Ubuntu 16.04上的pg_dump (PostgreSQL) 9.5.8

该问题影响了几个不同的表,并且在这些表中的共同点之一是在psql保留的单词列表上命名了列。也许还有另一个解释说明为什么会发生这种情况,所以我很想听听问题的替代理论。

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

强烈建议您不要将pg_dump用于红移。试试UNLOAD命令。https://docs.aws.amazon.com/redshift/latest/dg/r_unload.html

最新更新