2015-07-19 89 views
-3

我有一个包含20000000行以上的数据。我想将一列(将字符串存储为数字)转换为十进制格式,以便搜索更快。Java Derby:如何通过记录访问数据库记录

但是,如果我尝试通过Java,通过将数据加载到结果集中,结果集崩溃或Java堆内存错误显示。

是否有任何方法修改每条记录,以便可以将字符串值转换并保存为新列中的十进制值?

回答

2

您应该将Java排除在外 - 原始SQL可以执行此操作。最佳方法是添加一个新列,将新列设置为现有字符串列的十进制转换值,然后(如果您愿意)删除旧字符串列并重命名新列。

如果你使用MySQL,比如,这看起来是这样的:

ALTER TABLE mytable 
    ADD COLUMN newcolumn DECIMAL(10,2); 

UPDATE mytable 
    SET newcolumn = CAST(oldcolumn AS DECIMAL(10,2)) 
WHERE true; 

ALTER TABLE mytable 
DROP COLUMN oldcolumn, 
CHANGE newcolumn oldcolumn DECIMAL(10,2); 
+1

在德比中,最后的语句是两个语句:一个砸柱,一到newcolumn重命名为oldcolumn 。除了轻微的语法差异之外,这种方法在Derby中也很棒! –