【问题标题】:Java Derby: How to access database reocrd by record [closed]Java Derby:如何按记录访问数据库记录[关闭]
【发布时间】:2015-07-19 22:06:04
【问题描述】:

我有一个超过 20000000 行的数据。我想将一列(将数字存储为字符串)转换为十进制格式,以便搜索更快。

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

有没有办法修改每条记录,使字符串值可以转换为十进制值保存在新列中?

【问题讨论】:

    标签: java derby


    【解决方案1】:

    您应该将 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);
    

    【讨论】:

    • 在 Derby 中,最后的语句是两个语句:一个删除列,一个将新列重命名为旧列。但除了细微的语法差异外,这种方法在 Derby 中也很有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 2016-06-12
    相关资源
    最近更新 更多