如何使用 Java 执行文件夹中的所有 sql 脚本?
How to execute all sql scripts in a Folder using Java?
我想通过 Java 在一个文件夹中执行所有 sql 脚本。它不起作用,因为之前它创建了一个新模式(命名为用户名)并且没有采用 sql 脚本中编写的模式。现在我得到了下面显示的异常的 44 倍。连接正常。哦,我正在使用 DB2。
我试过以下方法:
public void sqlScripts() throws IOException, SQLException {
File folder = new File("E:/maProject/sql");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
BufferedReader reader = null;
Statement statement = null;
try {
statement = con.createStatement();
reader = new BufferedReader(new FileReader(file));
statement.execute(String.valueOf(file));
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是我得到 44x 的异常:
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-7, SQLSTATE=42601, SQLERRMC=\;E:, DRIVER=4.26.14
我做错了什么?
提前致谢
SQLCODE=7
是 SQL0007N
错误信息的描述是
SQL0007N The statement was not processed because a character that is
not supported in SQL statements was included in the SQL statement.
The specified character is not a valid character in SQL statements.
The "" runtime token indicates the 20 characters of the SQL
statement that preceded the character that is not valid.
所以你的无效字符是(接近)这个文本\;E:
我怀疑您正试图 运行 在一个语句中包含两个语句。根据例如 你需要一次执行一个语句
正如@mustaccio 所说,我尝试执行文件名而不是文件内容。所以现在我要做的是:
public void sqlScripts() {
try {
File folder = new File("E:/maProject/sql");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
ScriptRunner scriptRunner = new ScriptRunner(con, false, false);
// Give the input file to Reader
Reader reader = new BufferedReader(new FileReader(file));
scriptRunner.runScript(reader);
}
} catch (Exception e) {
e.printStackTrace();
}
}
我想通过 Java 在一个文件夹中执行所有 sql 脚本。它不起作用,因为之前它创建了一个新模式(命名为用户名)并且没有采用 sql 脚本中编写的模式。现在我得到了下面显示的异常的 44 倍。连接正常。哦,我正在使用 DB2。
我试过以下方法:
public void sqlScripts() throws IOException, SQLException {
File folder = new File("E:/maProject/sql");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
BufferedReader reader = null;
Statement statement = null;
try {
statement = con.createStatement();
reader = new BufferedReader(new FileReader(file));
statement.execute(String.valueOf(file));
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是我得到 44x 的异常:
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-7, SQLSTATE=42601, SQLERRMC=\;E:, DRIVER=4.26.14
我做错了什么?
提前致谢
SQLCODE=7
是 SQL0007N
错误信息的描述是
SQL0007N The statement was not processed because a character that is not supported in SQL statements was included in the SQL statement.
The specified character is not a valid character in SQL statements. The "" runtime token indicates the 20 characters of the SQL statement that preceded the character that is not valid.
所以你的无效字符是(接近)这个文本\;E:
我怀疑您正试图 运行 在一个语句中包含两个语句。根据例如 你需要一次执行一个语句
正如@mustaccio 所说,我尝试执行文件名而不是文件内容。所以现在我要做的是:
public void sqlScripts() {
try {
File folder = new File("E:/maProject/sql");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
ScriptRunner scriptRunner = new ScriptRunner(con, false, false);
// Give the input file to Reader
Reader reader = new BufferedReader(new FileReader(file));
scriptRunner.runScript(reader);
}
} catch (Exception e) {
e.printStackTrace();
}
}