Snowflake cloud data platform 如何将列数据类型从boolean更改为varchar(50)?

Snowflake cloud data platform 如何将列数据类型从boolean更改为varchar(50)?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,如何在snowflake中将列的数据类型从布尔更改为varchar50 以下示例中的OTCONTROLABLE BOOLINE设置为OTCONTROLABLE varchar50 创建或替换表格来源未识别的地点\u OTCN030 第50年, 第50个月, 可控制布尔; Neeraj-您可以运行CTAS语句来创建一个新表,然后交换这些表 在这里指导您完成CTA的文档 互换声明 Neeraj-您可以运行CTAS语句来创建一个新表,然后交换这些表 在这里指导您完成CTA的文档 互换声明 我会推荐@b

如何在snowflake中将列的数据类型从布尔更改为varchar50

以下示例中的OTCONTROLABLE BOOLINE设置为OTCONTROLABLE varchar50

创建或替换表格来源未识别的地点\u OTCN030 第50年, 第50个月, 可控制布尔;
Neeraj-您可以运行CTAS语句来创建一个新表,然后交换这些表

在这里指导您完成CTA的文档

互换声明


Neeraj-您可以运行CTAS语句来创建一个新表,然后交换这些表

在这里指导您完成CTA的文档

互换声明


我会推荐@bstora建议的方法,但这里还有另一个选项供参考:

备份您正在处理的表 向表中添加新的varchar列 使用update语句将值从布尔列复制到新的varchar列 删除旧的布尔列 重命名varchar列,使其与删除的布尔列同名 -设置示例表 创建或替换临时表public.example_table 布尔布尔 ; -插入一些示例值 将覆盖插入public.example_表值1,0; -创建一个新的varchar列,将布尔值保存为varchar alter table public.example_table添加列temp_varchar_col varchar50; -将所有值从布尔列复制到新的varchar列 更新public.example_table set temp_varchar_col=bool_col; -检查新列中的数据是否正常 从public.example_表中选择*; -删除旧的布尔类型列 alter table public.example_table drop column bool_col; -将varchar列重命名为与删除的布尔类型列相同的名称 更改表public.example_table将列temp_varchar_col重命名为bool_col; -检查一切是否正常 从public.example_表中选择*;
bstora提到的交换表方法的优点是,用户永远看不到有两列的表,而且可能更快。

我推荐@bstora建议的方法,但这里还有另一个选项供参考:

备份您正在处理的表 向表中添加新的varchar列 使用update语句将值从布尔列复制到新的varchar列 删除旧的布尔列 重命名varchar列,使其与删除的布尔列同名 -设置示例表 创建或替换临时表public.example_table 布尔布尔 ; -插入一些示例值 将覆盖插入public.example_表值1,0; -创建一个新的varchar列,将布尔值保存为varchar alter table public.example_table添加列temp_varchar_col varchar50; -将所有值从布尔列复制到新的varchar列 更新public.example_table set temp_varchar_col=bool_col; -检查新列中的数据是否正常 从public.example_表中选择*; -删除旧的布尔类型列 alter table public.example_table drop column bool_col; -将varchar列重命名为与删除的布尔类型列相同的名称 更改表public.example_table将列temp_varchar_col重命名为bool_col; -检查一切是否正常 从public.example_表中选择*;
bstora提到的交换表方法的优点是,用户永远看不到包含两列的表,而且速度可能也更快。

我几乎给出了类似的答案。这会很有帮助,尤其是当桌子很大或很活跃的时候。我几乎给出了一个类似的答案。如果表格非常大或很活跃,这会很有帮助。嗨,Neeraj,如果有任何答案解决了你的问题,请考虑通过点击复选标记来接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。嗨,Neeraj,如果有任何答案解决了你的问题,请考虑通过点击复选标记来接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。