package com.dsideal.base.Tools; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import java.io.IOException; import java.util.Arrays; import java.util.List; public class Step3_DataSetFakeData { public static DataEaseModel dm = new DataEaseModel(); /** * 拷贝昆明市的数据 * * @param table_name * @param area_name */ public static void CopyData(String table_name, String source_area_name, String area_name, String parent_name) { String sql = "select * from `" + table_name + "` where `行政区划`='" + source_area_name + "'"; List list = Db.use(DataEaseModel.DB_NAME).find(sql); for (Record r : list) { r.set("行政区划", area_name); r.set("上级行政区划", parent_name); r.remove("id"); } System.out.println(table_name); Db.use(DataEaseModel.DB_NAME).batchSave(table_name, list, 100); } public static void main(String[] args) throws IOException { //切换至测试数据库 DataEaseModel.DB_NAME = "dataease_huanghai"; //初始化数据库链接 LocalMysqlConnectUtil.Init(); DataEaseModel dm = new DataEaseModel(); //这几个是要保留的地名 List keepArea = Arrays.asList("云南省", "昆明市", "楚雄州", "寻甸县"); //所有市州 Record rPrinvice = dm.getAreaByName("云南省"); String province_id = rPrinvice.getStr("id"); List listCity = dm.getAreaList(province_id); //拷贝城市数据 for (Record rCity : listCity) { //城市名称 String area_name = rCity.getStr("area_name"); //如果在保留名单中,则跳过 if (keepArea.contains(area_name)) { continue; } //遍历所有市州数据集 int identity_id = 2; List list = dm.getDataSetByIdentityId(identity_id, null); for (Record record : list) { String table_name = record.getStr("table_name"); System.out.println("正在处理数据集:" + table_name); //检查这个行政区划,在本数据表中是不是存在过,判断办法是 列名: `行政区划`= area_name,如果存在则不作处理,否则拷贝昆明市的数据 String sql = "delete from `" + table_name + "` where `行政区划`='" + area_name + "'"; Db.use(DataEaseModel.DB_NAME).update(sql); CopyData(table_name, "昆明市", area_name, "云南省"); } } //获取所有县区 List listArea = dm.getProvinceArea("云南省"); for (Record rArea : listArea) { //城市名称 String area_name = rArea.getStr("area_name"); String parent_id = rArea.getStr("parent_id"); //隶属哪个市州 Record parentRecord = dm.getAreaById(parent_id); String parent_name = parentRecord.getStr("area_name"); //如果在保留名单中,则跳过 if (keepArea.contains(area_name)) { continue; } //遍历所有县区数据集 int identity_id = 3; List list = dm.getDataSetByIdentityId(identity_id, null); for (Record record : list) { String table_name = record.getStr("table_name"); System.out.println(area_name + "正在处理数据集:" + table_name); //检查这个行政区划,在本数据表中是不是存在过,判断办法是 列名: `行政区划`= area_name,如果存在则不作处理,否则拷贝昆明市的数据 String sql = "delete from `" + table_name + "` where `行政区划`='" + area_name + "'"; Db.use(DataEaseModel.DB_NAME).update(sql); CopyData(table_name, "寻甸县", area_name, parent_name); } } } }