如何在MonetDB中更改现有表中列的类型?根据{{3}},代码应该类似于
ALTER TABLE <tablename> ALTER COLUMN <columnname> SET ...
然后我基本上丢失了,因为我不知道MonetDB使用的SQL遵循哪个标准,我得到语法错误。如果这个陈述不可能,我将不胜感激,对于大型(10 ^ 9条记录的订单)表格而言,这种解决方法并不太慢。
注意:我在从csv文件导入一些批量数据到我的数据库中的表时遇到了这个问题。其中一列是INT类型,但文件中某些值超过了INT限制2 ^ 31-1(是的,表很大),因此事务中止。在我发现了这个失败的原因之后,我想把它改成BIGINT但是我试过的所有SQL代码版本都失败了。
答案 0 :(得分:3)
目前不支持此功能。但是,有一种解决方法:
此示例的示例表,假设我们要将列b
的类型从integer
更改为double
。
create table a(b integer);
insert into a values(42);
alter table a add column b2 double;
update a set b2=b;
alter table a drop column b;
alter table a add column b double;
update a set b=b2;
alter table a drop column b2;
请注意,如果有多个列,则会更改列的顺序。但是,这只是一个美容问题。