【问题标题】:Extracting SQL commands from .sql file using Java使用Java从.sql文件中提取SQL命令
【发布时间】:2011-12-19 15:42:33
【问题描述】:

我需要使用 java 从 .sql 文件中获取 SQL 命令。

该文件包含开头带有“--”的行,因此理想情况下它会忽略这些行。

我已经研究过使用 .useDelimiter("(;(\r)?\n)|(--\n)");

我需要使用 while 循环来读取文件并找到 SQL 命令并在找到它们时执行它们。我看过的例子似乎不是很有效。

对此的任何帮助将不胜感激:)

【问题讨论】:

  • 这是一个看似简单的问题,很快就会失控。 SQL 实际上有一个非常复杂的语法,允许语句跨越多行,cmets。在一个简单的while循环中很难处理。查看sqlparser.com 以获得更强大的解决方案。
  • 也许这是一个选项? stackoverflow.com/q/2071682/395975

标签: java sql


【解决方案1】:

你确定你真的想要这个吗?使用 DB 特定的命令行实用程序运行此脚本要容易得多。

例如,对于 MySql,命令行是 mysql -uUSER -pPASSWORD < a.sql 它简单、快速且 100% 有效。如果您想从 java 运行它,请使用 Runtime.getRuntime().exec()ProcessBuilder

逐行读取SQL文件,忽略cmet不是问题(使用正则表达式'^--'或line.startsWith("--")。找到每条SQL语句的开头和结尾是一个问题.而且你不能单独从脚本运行语句。SQL支持变量。一个语句可以定义变量,另一个可以使用它。另见@Matt Fenwick写的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-24
    • 2019-02-10
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多