代码之家  ›  专栏  ›  技术社区  ›  Flo

pg\U dump输出空create语句

  •  1
  • Flo  · 技术社区  · 7 年前

    因此,我试图使用pg\u dump从红移数据库中转储几个表。我对这里的数据本身不感兴趣,它将使用UNLOAD在单独的过程中提取。

    然而,虽然pg\u dump执行时没有任何错误,但输出sql脚本中的CREATE TABLE语句是空的,例如

    CREATE TABLE test_data_sampling.orders();
    

    有趣的是,接下来是

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

    这似乎表明pg\u dump完全知道表中至少有一列。

    我的pg\U转储调用如下所示:

    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\u dump调用中指定的同一个用户登录到DB时,我可以查询没有任何问题的表(即它们确实有列)。 我的用户既是表的所有者,也是架构的所有者。

    我不知所措。任何帮助都将不胜感激。

    编辑: 一些附加信息。

    所讨论的表格是

    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 回复  |  直到 7 年前
        1
  •  1
  •   Joe Harris    7 年前

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

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