gpt4 book ai didi

java - 通过Java执行.sql文件

转载 作者:行者123 更新时间:2023-12-01 05:46:30 25 4
gpt4 key购买 nike

我有一个 sql 脚本文件,我需要通过 java 执行其中存在的命令。我在互联网上搜索了同样的内容,我得到了一些定义解析器的代码来分割 SQL 语句并执行它。但它们都不适用于我的sql脚本文件。因为我的脚本文件包含create语句和alter语句,末尾没有分号[相反,它有GO]任何人都可以提出执行脚本文件的解决方案吗?谢谢,马赫什

最佳答案

对于简单的脚本,我通常使用 ibatis 中的此类 - ScriptRunner 。或者,您可以从 Java 生成一个新的数据库客户端进程,并输入您不想执行的脚本。这适用于所有脚本,因为当 sql 文件中的分隔符发生更改时,像 ScriptRunner 这样的简单解决方案就无法正常工作。

下面是如何将 sql 作为字符串提供给生成的数据库客户端进程的示例:

private void runSql(String pSql) {
String tCommand = "mysql -u " + username + (password != null ? " -p" + password : "") + " " + dbName;
System.out.println(tCommand);

try {
Process tProcess = Runtime.getRuntime().exec(tCommand);
OutputStream tOutputStream = tProcess.getOutputStream();
Writer w = new OutputStreamWriter(tOutputStream);
System.out.println(pSql);
w.write(pSql);
w.flush();

Scanner in = new Scanner(tProcess.getErrorStream());

String errorMessage = "";

while (in.hasNext()) {
errorMessage += in.next() + " ";
}

if (errorMessage.length() > 0) {
System.out.println(errorMessage);
throw new ClientSqlExecutionException(errorMessage);
}
} catch (IOException e) {
e.printStackTrace();
}
}

关于java - 通过Java执行.sql文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5801838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com