簡體   English   中英

我可以通過JDBC連接運行“源”命令(SQL腳本)嗎?

[英]Can I run a “source” command (SQL script) from a JDBC connection?

我正在編寫一個具有數據訪問層的應用程序,以抽象化到SQLITE3或MySQL數據庫的基礎連接。

昨天在這里有了一些幫助,向我展示了如何使用流程生成器來使用輸出重定向將命令行導入到SQLITE3 DB中。

現在,我試圖通過導入轉儲文件在MySQL中創建相同的數據庫。 從命令行客戶端加載工作正常。 我只是告訴它源文件,並且數據庫創建成功。

但是,我試圖在運行時通過代碼來執行此操作,並且我執行SQL語句的方法無法執行源命令。

我懷疑這是因為“源”不是SQL,但是我不知道嘗試使用其他什么來運行它。

我的錯誤消息是:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'source /tmp/ISMCoreActionPack_mysql.sql' at line 1

失敗的命令字符串:

source /tmp/ISMCoreActionPack_mysql.sql;

我的方法是:

public Boolean executeSqlStatement(String sql)  {
    Boolean rc = false;
    try {
      Connection connection = getConnection();
      Statement statement = connection.createStatement();
      rc = statement.execute(sql);
      connection.close();
    } catch (SQLException e) {
      e.printStackTrace();
      System.err.println(e.getClass().getName() + ": " + e.getMessage());
      System.exit(1);
    }
    return rc;
}

誰能建議該怎么做?

您不能運行'source'命令,因為JDBC驅動程序不支持它,只有MySQL不支持。

我對您的建議如下。 編寫一些解析器,該解析器從文件讀取查詢,並使用JDBC語句執行查詢。

source不是MySQL的SQL方言的一部分; 這是一個MySQL Shell命令。 盡管如此,您仍不需要編寫自己的解析器。 您可以使用SqlTool之類的方法,本答案所述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM