【发布时间】:2015-07-19 22:06:04
【问题描述】:
我有一个超过 20000000 行的数据。我想将一列(将数字存储为字符串)转换为十进制格式,以便搜索更快。
但是,如果我尝试通过 Java 将数据加载到结果集中,则会显示结果集崩溃或 java 堆内存错误。
有没有办法修改每条记录,使字符串值可以转换为十进制值保存在新列中?
【问题讨论】:
我有一个超过 20000000 行的数据。我想将一列(将数字存储为字符串)转换为十进制格式,以便搜索更快。
但是,如果我尝试通过 Java 将数据加载到结果集中,则会显示结果集崩溃或 java 堆内存错误。
有没有办法修改每条记录,使字符串值可以转换为十进制值保存在新列中?
【问题讨论】:
您应该将 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);
【讨论】: