提交 247fa5f8 authored 作者: Thomas Mueller's avatar Thomas Mueller

The Shell tool will execute SQL statements passed as using the command line parameter -sql.

上级 f2810d61
...@@ -11,6 +11,7 @@ import java.io.IOException; ...@@ -11,6 +11,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.PrintStream; import java.io.PrintStream;
import java.io.StringReader;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
...@@ -23,6 +24,7 @@ import java.util.ArrayList; ...@@ -23,6 +24,7 @@ import java.util.ArrayList;
import java.util.Properties; import java.util.Properties;
import org.h2.engine.Constants; import org.h2.engine.Constants;
import org.h2.server.web.ConnectionInfo; import org.h2.server.web.ConnectionInfo;
import org.h2.util.ScriptReader;
import org.h2.util.Utils; import org.h2.util.Utils;
import org.h2.util.IOUtils; import org.h2.util.IOUtils;
import org.h2.util.JdbcUtils; import org.h2.util.JdbcUtils;
...@@ -63,6 +65,8 @@ public class Shell extends Tool implements Runnable { ...@@ -63,6 +65,8 @@ public class Shell extends Tool implements Runnable {
* <td>The password</td></tr> * <td>The password</td></tr>
* <tr><td>[-driver &lt;class&gt;]</td> * <tr><td>[-driver &lt;class&gt;]</td>
* <td>The JDBC driver class to use (not required in most cases)</td></tr> * <td>The JDBC driver class to use (not required in most cases)</td></tr>
* <tr><td>[-sql "&lt;statements&gt;"]</td>
* <td>Execute the SQL statements and exit</td></tr>
* </table> * </table>
* If special characters don't work as expected, you may need to use * If special characters don't work as expected, you may need to use
* -Dfile.encoding=UTF-8 (Mac OS X) or CP850 (Windows). * -Dfile.encoding=UTF-8 (Mac OS X) or CP850 (Windows).
...@@ -110,6 +114,7 @@ public class Shell extends Tool implements Runnable { ...@@ -110,6 +114,7 @@ public class Shell extends Tool implements Runnable {
String url = null; String url = null;
String user = ""; String user = "";
String password = ""; String password = "";
String sql = null;
for (int i = 0; args != null && i < args.length; i++) { for (int i = 0; args != null && i < args.length; i++) {
String arg = args[i]; String arg = args[i];
if (arg.equals("-url")) { if (arg.equals("-url")) {
...@@ -121,6 +126,8 @@ public class Shell extends Tool implements Runnable { ...@@ -121,6 +126,8 @@ public class Shell extends Tool implements Runnable {
} else if (arg.equals("-driver")) { } else if (arg.equals("-driver")) {
String driver = args[++i]; String driver = args[++i];
Utils.loadUserClass(driver); Utils.loadUserClass(driver);
} else if (arg.equals("-sql")) {
sql = args[++i];
} else if (arg.equals("-help") || arg.equals("-?")) { } else if (arg.equals("-help") || arg.equals("-?")) {
showUsage(); showUsage();
return; return;
...@@ -133,7 +140,18 @@ public class Shell extends Tool implements Runnable { ...@@ -133,7 +140,18 @@ public class Shell extends Tool implements Runnable {
conn = DriverManager.getConnection(url, user, password); conn = DriverManager.getConnection(url, user, password);
stat = conn.createStatement(); stat = conn.createStatement();
} }
promptLoop(); if (sql == null) {
promptLoop();
} else {
ScriptReader r = new ScriptReader(new StringReader(sql));
while (true) {
String s = r.readStatement();
if (s == null) {
break;
}
execute(s);
}
}
} }
private void showHelp() { private void showHelp() {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论