CleanCesiumMapConfigData.java 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import java.sql.*;
  2. public class CleanCesiumMapConfigData {
  3. public static void main(String[] args) {
  4. String url = "jdbc:dm://192.168.0.145:30236?charset=utf8";
  5. String username = "WATERSHED";
  6. String password = "WaterShed./1224";
  7. try {
  8. Class.forName("dm.jdbc.driver.DmDriver");
  9. Connection conn = DriverManager.getConnection(url, username, password);
  10. Statement stmt = conn.createStatement();
  11. System.out.println("=== 清理前的数据统计 ===");
  12. ResultSet rs1 = stmt.executeQuery("SELECT user_id, COUNT(*) as count FROM WATERSHED.CESIUM_MAP_CONFIG GROUP BY user_id");
  13. while (rs1.next()) {
  14. System.out.println("用户ID: " + rs1.getLong("user_id") + ", 配置数量: " + rs1.getInt("count"));
  15. }
  16. System.out.println("\n=== 开始清理重复配置 ===");
  17. ResultSet rs2 = stmt.executeQuery(
  18. "SELECT user_id FROM WATERSHED.CESIUM_MAP_CONFIG GROUP BY user_id HAVING COUNT(*) > 1"
  19. );
  20. int totalDeleted = 0;
  21. while (rs2.next()) {
  22. Long userId = rs2.getLong("user_id");
  23. System.out.println("\n处理用户ID: " + userId);
  24. ResultSet rs3 = stmt.executeQuery(
  25. "SELECT config_id, is_default, update_time FROM WATERSHED.CESIUM_MAP_CONFIG " +
  26. "WHERE user_id = " + userId + " ORDER BY update_time DESC"
  27. );
  28. java.util.List<Long> idsToDelete = new java.util.ArrayList<>();
  29. boolean hasDefault = false;
  30. while (rs3.next()) {
  31. Long configId = rs3.getLong("config_id");
  32. int isDefault = rs3.getInt("is_default");
  33. if (isDefault == 1) {
  34. System.out.println(" 保留默认配置: ID=" + configId);
  35. hasDefault = true;
  36. } else {
  37. idsToDelete.add(configId);
  38. }
  39. }
  40. rs3.close();
  41. for (Long configId : idsToDelete) {
  42. int deleteResult = stmt.executeUpdate(
  43. "DELETE FROM WATERSHED.CESIUM_MAP_CONFIG WHERE config_id = " + configId
  44. );
  45. if (deleteResult > 0) {
  46. System.out.println(" 删除重复配置: ID=" + configId);
  47. totalDeleted++;
  48. }
  49. }
  50. }
  51. rs2.close();
  52. System.out.println("\n=== 清理后的数据统计 ===");
  53. ResultSet rs4 = stmt.executeQuery("SELECT user_id, COUNT(*) as count FROM WATERSHED.CESIUM_MAP_CONFIG GROUP BY user_id");
  54. while (rs4.next()) {
  55. System.out.println("用户ID: " + rs4.getLong("user_id") + ", 配置数量: " + rs4.getInt("count"));
  56. }
  57. System.out.println("\n=== 清理完成 ===");
  58. System.out.println("总共删除了 " + totalDeleted + " 条重复配置");
  59. rs1.close();
  60. rs4.close();
  61. stmt.close();
  62. conn.close();
  63. } catch (Exception e) {
  64. e.printStackTrace();
  65. }
  66. }
  67. }