首页 > 解决方案 > 在 Redshift 中创建表失败

问题描述

我 pgdumped 了一个 redshift 表,我正在尝试恢复它。但是,恢复时出现错误。我什至尝试手动运行 create table 命令,但它会产生错误。我不知道出了什么问题。谢谢。

CREATE TABLE report (
    experiment_id bigint,
    offer_type character varying(50),
    variant_id bigint,
    variant_name character varying(256),
    active_lapsed character varying(10),
    active_lapsed_new character varying(10),
    am_pm_dominance character varying(20),
    channel character varying(50),
    daypart character varying(20),
    marketable boolean,
    tcm character varying(5),
    vip_flag boolean,
    weekly_freq_over_8w double precision,
    product1 integer,
    product2 integer,
    product3 integer,
    product4 integer,
    product5 integer,
    reward1 integer,
    reward2 integer,
    reward3 integer,
    hurdle1 integer,
    hurdle2 integer,
    hurdle3 integer,
    product1_recommender character varying(50),
    product2_recommender character varying(50),
    product3_recommender character varying(50),
    product4_recommender character varying(50),
    product5_recommender character varying(50),
    product1_description character varying(100),
    product2_description character varying(100),
    product3_description character varying(100),
    product4_description character varying(100),
    product5_description character varying(100),
    microsegment integer,
    microsegment_desc character varying(100),
    tag character varying(50),
    error_tag character varying(25),
    vip_email character varying(50),
    count bigint,
    error_message character varying(1024),
    unlimited_redemption boolean,
    push_notification_flags character varying(60),
    weekend_3d_freq_over_8w double precision,
    experiment_group character varying(100),
    created_date date,
    automatic_hurdle_qty boolean DEFAULT false,
    product1_frequency double precision,
    product2_frequency double precision,
    product3_frequency double precision,
    product4_frequency double precision,
    product5_frequency double precision,
    weekly_freq_over_8w_after_2pm double precision,
    weekly_freq_over_8w_before_11am double precision,
    weekly_non_dominant_daypart_freq_over_8w double precision,
    automatic_product_qty boolean DEFAULT false,
    optimization_model character varying(21),
    control_bool boolean
);

这是我收到的错误。

ERROR:  syntax error at or near "tag"
LINE 38:     tag character varying(50),

标签: amazon-redshiftddl

解决方案


tag根据他们的在线手册,是 Amazon Redshift中的保留字

您可以通过双引号强制它:

...
"tag" character varying(50),
...

但是,您必须始终双引号该列名。更简洁的解决方案是避免保留字作为标识符。

不确定您是如何使用未引用tag的列名生成该转储的。也许使用的版本pg_dump与数据库版本不匹配?


推荐阅读