【问题标题】:snowflake - modify a data type from VARCHAR(16777216) to NUMBER雪花 - 将数据类型从 VARCHAR(16777216) 修改为 NUMBER
【发布时间】:2020-10-12 02:22:35
【问题描述】:

我需要在雪花中将类型 VARCHAR(16777216) 修改为 NUMBER。

ALTER TABLE [TABLE_NAME] ALTER [COLUMN_NAME] 设置数据类型 NUMBER; 返回:SQL 编译错误:无法将列 [COLUMN_NAME] 从类型 VARCHAR(16777216) 更改为 NUMBER(38,0)

还有 ALTER TABLE [TABLE_NAME] ALTER [COLUMN_NAME] 设置数据类型 VARCHAR(500); 返回:SQL 编译错误:无法将列 [COLUMN_NAME] 从类型 VARCHAR(16777216) 更改为 VARCHAR(500),因为不支持减少 varchar 的字节长度。

(我知道我可以在表中添加一个新列,然后对其进行更新并删除旧列,但我想将该列保持在其序数位置,而不是移动到最后一列,
我也知道我可以使用新数据类型创建新表,然后将数据插入其中,但是有很多数据,而且我需要在一个以上的表上进行此更改......所以我更愿意避免这种解决方案)

有什么简单的方法吗?

谢谢

【问题讨论】:

    标签: snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    我不确定您是否意识到这一点,但在 Snowflake 中,创建新表与复制数据和更改数据类型之间并没有太大区别。 Snowflake 用于存储数据的数据库文件无法更新,因此任何数据更新都会导致创建一个包含数据的新文件(如果该文件中有超过 1 条记录,则意味着数据将在 2 个文件之间拆分,从而导致性能下降)

    因此,实际上并没有一种“简单”的方法,因为如果您尝试更改数据类型,您能想到的任何事情都会导致整个表大修。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多