【以下的问题经过翻译处理】 我正在尝试从S3桶中的.csv文件加载Redshift表格。创建表格时,有三列设置了默认值。
,"current_row_ind" CHAR(1) DEFAULT 'Y'
,"EFFECTIVE_DATE" DATE DEFAULT TO_DATE(CURRENT_DATE, 'YYYY-MM-DD')
,"EXPIRATION_DATE" DATE DEFAULT TO_DATE('9999-12-31', 'YYYY-MM-DD')
我的文件中有些行的这些字段有值,有些没有。当我使用COPY命令加载表格时,Redshift似乎会忽略那些没有填充值的字段的默认值。如果我在列表中不指定这些字段,但在文件中留下它们,我会得到“Extra column(s) found”错误。如果我在列表中指定这些字段,则文件中没有值的这些字段将使用NULL值而不是默认值进行添加。如果我在COPY列表中删除这些字段并从文件中将它们删除,则它们将使用默认值进行加载。显然,这不会奏效,因为一些字段具有合法值。我在以下列出了我使用COPY命令的参数:
FORMAT AS CSV DELIMITER ','
QUOTE '"'
ACCEPTINVCHARS '?'
TIMEFORMAT 'auto'
IGNOREHEADER 1
ACCEPTANYDATE
BLANKSASNULL
DATEFORMAT 'auto'
EMPTYASNULL
EXPLICIT_IDS
FILLRECORD
IGNOREBLANKLINES
TRIMBLANKS
REGION AS 'us-west-2'
我的问题是,如何使用COPY命令加载这个表格并在文件中找到这些字段的值,但当没有值时使用默认值?我在re:Post和StackOverflow等其他论坛以及这里进行了研究,但没有找到解决这个特定场景的方法。非常感谢您的帮助。