pg_dump输出空的create语句

时间:2018-03-23 10:56:06

标签: amazon-redshift plpgsql pg-dump

所以我试图使用pg_dump从Redshift数据库转储几个表。我对这里的数据本身不感兴趣,它将使用UNLOAD在一个单独的过程中提取。

但是,尽管执行pg_dump没有任何错误,但output-sql-script中的CREATE TABLE语句为空,例如我得到像

这样的东西
CREATE TABLE test_data_sampling.orders();

有趣的是,接下来是

ALTER TABLE ONLY test_data_sampling.orders ALTER COLUMN orders_id SET NOT NULL;

这似乎表明pg_dump完全知道表中至少有一列。

我的pg_dump调用如下所示:

pg_dump -s -t test_data_sampling.customer -t test_data_sampling.orders -t test_data_sampling.addr --dbname=postgresql://<user>:<password>@<host>:<port>/dbName?ssl=true --file=backup_dbName.sql

当我使用我在pg_dump调用中指定的相同用户登录数据库时,我可以查询表而没有任何问题(即它们确实有列)。 我的用户是表的所有者以及模式的所有者。

我不知所措。任何帮助都会非常感激。

编辑: 一些额外的信息。

有问题的表是

的产物
CREATE TABLE <table> (LIKE <parentTable>);

对于订单,父母的ddl如下所示:

CREATE TABLE IF NOT EXISTS <parentTableName>(
    orders_id int primary key, 
    cust_id int, 
    item varchar(50), 
    order_date date, 
    descr varchar(100)
);

正如人们可能从这些DDL中猜到的那样,这些只是一些虚拟测试表。

1 个答案:

答案 0 :(得分:1)

view for generating table DDL in the Redshift Utils library on GitHub

库中的其他项目对于提取现有项目也很有用。