有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在MySQL表中插入多行

我有一张桌子如下:

CREATE TABLE IF NOT EXISTS mytable (
  `id` INT(22) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL, 
  `uuid` VARCHAR(255) NOT NULL, 
  `x` INT(11) NOT NULL,
  `y` INT(11) NOT NULL, 
  `z` INT(11) NOT NULL,
  `time` BIGINT NOT NULL, 
  PRIMARY KEY (`id`),
  UNIQUE KEY idx_table_x_y_z ( x, y, z )
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

现在,我想在maxmin值之间为xyz的每个组合添加一行。我该怎么做

在java中,我会循环遍历xminxmax之间的xyyminymaxzminzmax之间的z,然后用这些值和uuidname发送一个查询,但对于10k查询,这会占用大量资源

有没有办法让MySQL服务器在内部执行此操作

PS:我在插入行时使用REPLACE INTO语法以避免重复

编辑: 这正是java的替代方案:

for(int x = xMin; x < xMax; x++) {
    for(int y = yMin; x < yMax; y++) {
        for(int z = zMin; x < zMax; z++) {
            try {
                SH.getManager().getMysqlManager().query(
                     "REPLACE INTO blocks_" + type.name + "_" + b.getWorld().getName() + "("
                     + "name, uuid, x, y, z, time) "
                     + "VALUES ( "
                     + "'" + name + "', '" + uuid + "', " + x + ", " + y + ", " + z + ", " + System.currentTimeMillis() + " "
                     + ");");
            } catch (final SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

为了节省I/o时间,我想使用mysql服务器而不是java来进行循环


共 (0) 个答案