java - 我可以从 JDBC 连接运行 "source"命令(SQL 脚本)吗?

标签 java mysql jdbc

我正在编写一个具有数据访问层的应用程序,用于抽象与 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 语句执行它们。

关于java - 我可以从 JDBC 连接运行 "source"命令(SQL 脚本)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028320/

相关文章:

java - 如何修复使用 Indigo 从 m2eclipse 插件生成的 struts 2 空白原型(prototype)中的 "addConfigurationProvider(Xml...) is undefined"错误?

java - 为什么我不能在任何方法之外修改类成员变量?

mysql - 禁用保留 VARCHAR 列的尾随空格

php - 在mysql中,使用UNIQUE键与NORMAL键在速度方面具有相同的效果吗?

java - 没有jdbc等框架,如何在java中连接数据库?

java - 检查数据库中是否有表

r - 无法打开客户端传输,JDBC 连接在 R 中被拒绝

java - 如何在 JPA 中使用 Enum 作为 NamedQuery 参数

Java游戏 - 处理线性运动

java - 用用户命名的java在mysql中创建一个表?