【问题标题】:adding new column in existing table for default timestamp in snowflake在现有表中为雪花中的默认时间戳添加新列
【发布时间】:2020-02-05 20:15:33
【问题描述】:

我正在尝试在现有表中添加包含 default time 的新列,但它不允许任何当前时间戳或 '2019-11-14 00:00:00.000 ' 这个时间格式为 snowflake

【问题讨论】:

  • 如何添加列(SQL 命令)以及尝试加载数据时遇到什么错误?您看过 Snowflake 文档吗?到目前为止您尝试过什么? docs.snowflake.net/manuals/user-guide/date-time-examples.html
  • alter table abc add column CREATED_DATE timestamp default current_timestamp()
  • 第二个是:alter table abc add column CREATED_DATE timestamp default 2020-02-04 00:00:00.000
  • 及其出现错误:SQL 编译错误:第 3 行语法错误,位置 43 意外 '00'。
  • 这个信息真的很有帮助,如果您在第一次发布后想到任何其他细节,您也可以随时返回并编辑您的问题,希望对您有所帮助。

标签: timestamp default snowflake-cloud-data-platform


【解决方案1】:

创建表后唯一可以添加的列默认值是default sequence.,所有其他列默认值都是not supported

一种解决方法可能是:

  1. 创建新的表格格式
  2. 将旧表的数据插入到新表中
  3. 同步时,暂停写入旧表
  4. 运行swap with命令将新的替换为旧的

【讨论】:

    【解决方案2】:

    虽然在这种情况下您无法更改默认值,但您可以创建一个新表,其中的列具有您需要的默认值。

    例如,创建一个具有相同结构的 tmp_table 并为 created_date 列使用:

    CREATED_DATE TIMESTAMP_NTZ(9) DEFAULT CAST(CURRENT_TIMESTAMP() AS TIMESTAMP_NTZ(9)),
    

    ... 完成创建表语句:

    ... as select * from orig_table;
    

    授予适当的权限,然后:

    alter table orig_table swap with tmp_table;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-23
      • 2021-08-12
      • 2021-06-23
      • 2016-12-19
      • 2021-01-01
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多