更改MonetDB中列的数据类型

时间:2015-01-04 21:07:17

标签: sql monetdb

如何在MonetDB中更改现有表中列的类型?根据{{​​3}},代码应该类似于

ALTER TABLE <tablename> ALTER COLUMN <columnname> SET ...

然后我基本上丢失了,因为我不知道MonetDB使用的SQL遵循哪个标准,我得到语法错误。如果这个陈述不可能,我将不胜感激,对于大型(10 ^ 9条记录的订单)表格而言,这种解决方法并不太慢。

注意:我在从csv文件导入一些批量数据到我的数据库中的表时遇到了这个问题。其中一列是INT类型,但文件中某些值超过了INT限制2 ^ 31-1(是的,表很大),因此事务中止。在我发现了这个失败的原因之后,我想把它改成BIGINT但是我试过的所有SQL代码版本都失败了。

1 个答案:

答案 0 :(得分:3)

目前不支持此功能。但是,有一种解决方法:

此示例的示例表,假设我们要将列b的类型从integer更改为double

create table a(b integer);
insert into a values(42);
  1. 创建临时列alter table a add column b2 double;
  2. 将临时列中的数据设置为原始数据update a set b2=b;
  3. 删除原始列alter table a drop column b;
  4. 使用新类型alter table a add column b double;
  5. 重新创建原始列
  6. 将数据从临时列移至新列update a set b=b2;
  7. 删除临时列alter table a drop column b2;
  8. 利润
  9. 请注意,如果有多个列,则会更改列的顺序。但是,这只是一个美容问题。