【问题标题】:Snowflake change data type of column in table, varchar -> Date雪花更改表中列的数据类型,varchar -> Date
【发布时间】:2022-01-05 21:06:34
【问题描述】:

如何将 varchar 数据类型更改为表中列数据类型的 DATE?

尝试了以下方法:

ALTER TABLE table.name.here MODIFY COLUMN insert_dt DATE;

我刚刚得到

SQL compilation error: cannot change column INSERT_DT from type VARCHAR(16777216) to DATE

【问题讨论】:

  • 您好,好像不支持,通过雪花检查此链接,它会告诉您支持和不支持的内容。 docs.snowflake.net/manuals/sql-reference/sql/…
  • 哇。这是非常令人惊讶的。似乎是一件非常初级和基本的事情......
  • 列是否保存保存为字符串的“日期”类型的数据?
  • 如果表为空,则删除列并使用新数据类型再次添加,如果您有数据,则使用 try_to_date 函数并将其转换为日期数据类型并加载到具有日期的新列中数据类型。
  • 是的,值是 '01/04/2022',但列数据类型是字符串。

标签: snowflake-cloud-data-platform


【解决方案1】:

不幸的是,这种数据类型更改是不允许的,通常你最好的选择是

  1. 添加具有临时名称和新数据类型的新列
  2. 运行更新语句将新列设置为旧列的值(使用任何必需的转换)
  3. 重命名列,并根据需要删除旧列。

有时也最容易在克隆或 CTAS 表中执行此更改,然后执行 ALTER TABLE SWAP WITH。

请注意,像这样的全表更新确实意味着重新创建微分区,这通常是可以的(如果有点慢),但您可能需要密切关注这是否会影响您的集群。这在 CTAS 方法中更容易控制,因为您可以在 ORDER BY 子句中显式维护排序。

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 2020-10-12
    • 2021-09-08
    • 2014-02-23
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多