首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让redshift为copy命令中指定的字段添加当前时间

问如何让redshift为copy命令中指定的字段添加当前时间
EN

Stack Overflow用户
提问于 2018-03-20 18:57:20
回答 1查看 593关注 0票数 1

我有一个TSV文件,我想通过copy命令加载到redshift中。

我希望表中的一个字段是一个时间戳,用来记录行被加载的时间。

我定义了一个这样的字段:

代码语言:javascript
复制
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

如果我在psql命令行插入到此行中,而不为此列指定值,则可以很好地工作-它如预期的那样缺省为当前时间戳。

但是,在我TSV文件中的列中,有什么会导致红移默认为当前时间戳?

如果我在TSV中使用\N,那么在ts字段中只会得到一个空值。

另一方面,如果我将列定义为NOT NULL

代码语言:javascript
复制
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL

然后我从COPY命令中得到一个错误,我不能将null值插入到一个非NULL字段中。

在mysql上,mysql会将null值转换为当前时间戳,但redshift的行为是抛出错误。

有什么建议吗?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-03-20 23:26:11

我已经在这个问题上绞尽脑汁了一段时间,找到了一个部分解决方法:您可以将ts列作为表的最后一列,将TSV文件与除此列之外的所有其他列放在一起。文件将与现有的列一起读取,并加载到目标表中具有相同宽度的连续列列表中,超出该宽度的所有列将保留默认值,例如,您可以使用id | ts表并仅使用id加载文件,ts将采用默认值。当前的时间戳列通常是一个元数据列,所以可以将它放在表的末尾。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49382384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档