Sql 在MonetDB中更改列的数据类型
如何更改MonetDB中现有表中列的类型?根据标准,代码应该是Sql 在MonetDB中更改列的数据类型,sql,monetdb,Sql,Monetdb,如何更改MonetDB中现有表中列的类型?根据标准,代码应该是 ALTER TABLE <tablename> ALTER COLUMN <columnname> SET ... ALTER TABLE ALTER COLUMN SET。。。 但是我基本上迷路了,因为我不知道MonetDB使用的SQL遵循的是哪种标准,所以我得到了一个语法错误。如果此声明不可能实现,我将非常感谢为大型(10^9条记录的顺序)表提供一个不会太慢的解决方案 注意:我在从csv文件向数据库中
ALTER TABLE <tablename> ALTER COLUMN <columnname> SET ...
ALTER TABLE ALTER COLUMN SET。。。
但是我基本上迷路了,因为我不知道MonetDB使用的SQL遵循的是哪种标准,所以我得到了一个语法错误。如果此声明不可能实现,我将非常感谢为大型(10^9条记录的顺序)表提供一个不会太慢的解决方案
注意:我在从csv文件向数据库中的表导入大量数据时遇到了这个问题。其中一列的类型为INT,但文件中的值在某个点超过INT限制2^31-1(是的,表很大),因此事务中止。在我找到失败的原因后,我想将其更改为BIGINT,但我尝试的所有版本的SQL代码都失败了。这目前不受支持。但是,有一个解决办法: 示例表对于此示例,假设我们希望将列
b
的类型从integer
更改为double
create table a(b integer);
insert into a values(42);
ALTERTABLE a add column b2 double代码>
更新a集合b2=b代码>
更改表a删除列b代码>
alter table a add column b double重新创建原始列代码>
更新集合b=b2代码>
alter table a删除列b2代码>
请注意,如果有多个列,这将更改列的顺序。然而,这只是一个表面问题。这是有效的!只需确保在步骤3之前删除原始列b上的任何约束即可。