我正在通过数据仓库模式和默认数据负载(用于初始开发的MySQL )移植到Redshift进行生产。初始默认数据是在维度表中作为一行创建的,按照每个http://www.kimballgroup.com/2010/10/design-tip-128-selecting-default-values-for-nulls/,自动增量列中设置的值为-1。
在将模式移到Redshift时,应将该列从auto_increment更改为identity,以保留数据库主键生成,但这不再允许插入身份列返回
ERROR: cannot set an identity column to a value
SQL state: 0A000ETL加载作业应该负责在此实例中自动递增维度键,还是还有其他任务来创建insert值?
发布于 2016-07-28 22:38:17
据我所知,重写自动生成的值不适用于INSERT。如果有可能将数据上载到S3,则可以使用Redshift的COPY命令将数据从S3加载到表中。让我们指定选项EXPLICIT_IDS,例如:
COPY your_table from 's3://path_to_your/data.csv' CREDENTIALS '' EXPLICIT_IDS;来自文档
如果要用表的源数据文件中的显式值覆盖自动生成的值,请将EXPLICIT_IDS与具有标识列的表一起使用。如果命令包括列列表,则该列表必须包含标识列才能使用此参数。EXPLICIT_IDS值的数据格式必须与CREATE定义指定的标识格式匹配。
https://stackoverflow.com/questions/37974289
复制相似问题