ExecuteSQLScript.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import java.sql.*;
  2. import java.io.*;
  3. import java.nio.file.*;
  4. import java.util.Scanner;
  5. public class ExecuteSQLScript {
  6. public static void main(String[] args) {
  7. String url = "jdbc:dm://192.168.0.145:30236";
  8. String username = "WATERSHED";
  9. String password = "WaterShed./1224";
  10. try {
  11. // 加载DM JDBC驱动
  12. Class.forName("dm.jdbc.driver.DmDriver");
  13. // 建立数据库连接
  14. Connection conn = DriverManager.getConnection(url, username, password);
  15. System.out.println("数据库连接成功!");
  16. // 执行SQL脚本文件
  17. executeScript(conn, "watershed_model.sql");
  18. executeScript(conn, "watershed_facility.sql");
  19. executeScript(conn, "watershed_equipment.sql");
  20. // 关闭连接
  21. conn.close();
  22. System.out.println("所有SQL脚本执行完成!");
  23. } catch (Exception e) {
  24. e.printStackTrace();
  25. }
  26. }
  27. private static void executeScript(Connection conn, String scriptFile) {
  28. try {
  29. System.out.println("正在执行脚本: " + scriptFile);
  30. // 读取SQL脚本文件
  31. String content = new String(Files.readAllBytes(Paths.get(scriptFile)));
  32. // 使用分号分割SQL语句
  33. Scanner scanner = new Scanner(content);
  34. scanner.useDelimiter(";");
  35. Statement stmt = conn.createStatement();
  36. while (scanner.hasNext()) {
  37. String sql = scanner.next().trim();
  38. if (!sql.isEmpty() && !sql.startsWith("--")) {
  39. try {
  40. stmt.execute(sql);
  41. } catch (SQLException e) {
  42. System.err.println("执行SQL失败: " + sql);
  43. System.err.println("错误信息: " + e.getMessage());
  44. }
  45. }
  46. }
  47. stmt.close();
  48. scanner.close();
  49. System.out.println("脚本 " + scriptFile + " 执行完成!");
  50. } catch (Exception e) {
  51. System.err.println("执行脚本 " + scriptFile + " 时出错:");
  52. e.printStackTrace();
  53. }
  54. }
  55. }