为了账号安全,请及时绑定邮箱和手机立即绑定

我可以从 JDBC 连接运行“源”命令(SQL 脚本)吗?

我可以从 JDBC 连接运行“源”命令(SQL 脚本)吗?

有只小跳蛙 2021-08-13 15:52:12
我正在编写一个应用程序,它有一个数据访问层来抽象与 SQLITE3 或 MySQL 数据库的底层连接。感谢昨天这里的一些帮助,我向我展示了如何使用进程构建器使用输出重定向将命令行导入运行到 SQLITE3 数据库中。现在我试图通过导入转储文件在 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;}谁能建议如何做到这一点?
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

您不能运行 'source' 命令,因为 JDBC 驱动程序不支持它,只有 MySQL。

我给你的建议如下。编写一些解析器,从文件中读取查询,并使用 JDBC 语句执行它们。


查看完整回答
反对 回复 2021-08-13
?
守着一只汪

TA贡献1872条经验 获得超3个赞

source不是 MySQL 的 SQL 方言的一部分;它是一个 MySQL shell 命令。不过,您不需要编写自己的解析器。你可以使用像虽然SqlTool在解释这个答案


查看完整回答
反对 回复 2021-08-13
  • 2 回答
  • 0 关注
  • 220 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信