AWS Redshift 默认时间戳
Posted
技术标签:
【中文标题】AWS Redshift 默认时间戳【英文标题】:AWS Redshift DEFAULT TIMESTAMP 【发布时间】:2017-06-03 00:39:43 【问题描述】:我正在将一些数据从旧系统移动到 AWS——并且我正在遵循当前协议:
创建新表 在存储桶中加载数据 从存储桶复制到表到目前为止,这很好用,但是我遇到了空 TIMESTAMPS 的问题(我的某些版本的日期不可用 - 所以我在旧版本上将它们设置为默认日期,但在新版本上,它们是被加载为 NULL)
对于每次 NULL 出现在我的 aws 日期列中,例如,我想将其替换为 '0000-00-00 00:00:00'。这是至关重要的,这样我就可以在两个表(旧表和新表)上运行 EXCEPT 函数来验证过程的稳健性。
我尝试过像 REPLACE、INSERT、
这样的显式命令我已经用日期列默认“0000-00-00 00:00:00”重建了表格
到目前为止没有运气。任何帮助都会很棒!谢谢!
【问题讨论】:
您能否解释一下为什么要设置假日期,而不是使用NULL
值?您的查询可以使用CASE
语句模拟虚假日期,这比在实际未知值的情况下插入虚假值要准确得多。数据库中通常不鼓励使用所谓的magic values,因为它们需要特殊处理,而大多数系统都知道如何处理(或忽略)NULL
值。
【参考方案1】:
如果您将列指定为 NOT NULL
,则 Redshift 的 COPY
将用列上指定的默认值替换 NULL
s(如果未指定默认值,则失败)。
查看 Redshift 文档中的 Load Data from a File with Default Values
部分:http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html
【讨论】:
以上是关于AWS Redshift 默认时间戳的主要内容,如果未能解决你的问题,请参考以下文章