我需要将类型VARCHAR(16777216)修改为NUMBER in snowflake。
ALTER TABLE TABLE_NAME ALTER SQL set data type NUMBER;返回: COLUMN_NAME编译错误:无法将列COLUMN_NAME从类型VARCHAR(16777216)更改为NUMBER(38,0)
ALTER TABLE varchar ALTER varchar type VARCHAR500;返回: TABLE_NAME编译错误:无法将列COLUMN_NAME从类型VARCHAR(16777216)更改为VARCHAR500,因为不支持减少varchar的字节长度。
(我知道我可以向表中添加一个新列,然后更新它并删除旧列,但我希望该列保持在其序号位置,而不是移动到最后一列,
此外,我知道我可以创建具有新数据类型的新表,然后向其中插入数据,但是有很多数据,并且需要对多个表进行此更改。因此,我更倾向于避免这种解决方案)
有什么简单的方法吗?
谢谢
发布于 2020-06-22 17:43:30
我不确定您是否知道这一点,但在Snowflake中,创建新表和复制数据以及更改数据类型之间没有太大区别。Snowflake用来存储数据的DB文件无法更新,因此任何数据更新都会导致创建一个包含数据的新文件(如果该文件中有超过1条记录,这意味着数据将被分割到2个文件中,从而导致性能下降)
由于这个原因,没有一种真正“简单”的方法,因为如果您试图更改数据类型,您能想到的任何东西都会导致整个表彻底翻新。
https://stackoverflow.com/questions/62510774
复制相似问题