雪花-将数据类型从VARCHAR(16777216)修改为NUMBER

时间:2020-06-22 08:57:20

标签: snowflake-schema

我需要在雪花中将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的字节长度。

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

有一种简单的方法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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

由于这个原因,实际上并没有一种“简便”的方法,因为如果您尝试更改数据类型,您会想到的任何事情都会对表进行全面检查。