当前位置: 首页 > 面试题库 >

通过Java执行.sql文件

梁才
2023-03-14
问题内容

我有一个sql脚本文件,我需要通过java执行其中的命令。我在互联网上搜索了相同的内容,得到了一些定义解析器的代码以拆分SQL语句并执行该代码。但是它们都不适合我的sql脚本文件。因为我的脚本文件同时包含create语句和alter语句,但不带分号[相反,它具有GO]有人可以建议一种执行脚本文件的解决方案吗?谢谢,Mahesh


问题答案:

对于简单的脚本,我通常使用ibatis-
ScriptRunner中的此类。另外,您可以从Java生成一个新的数据库客户端进程,并输入您不想执行的脚本。例如,当更改sql文件中的定界符时,像ScriptRunner这样的简单解决方案就无法很好地工作,这将适用于所有脚本。

这是一个示例,该示例如何将sql作为字符串提供给Spawed db客户端进程:

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();
        }
    }


 类似资料:
  • 问题内容: 我需要对CSV文件(以逗号分隔的文本文件)应用SQL查询。我的SQL是通过其他工具预定义的,无法更改。它可能在FROM部分中包含嵌入式选择和表别名。 对于我的任务,我发现了两个提供JDBC驱动程序 的开源 库(这是项目要求): CsvJdbc XlSQL JBoss Teiid 创建一个Apache Derby DB,将所有CSV加载为表格并执行查询。 这些是我遇到的问题: 它不接受S

  • 问题内容: 我正在使用R包通过R访问我的PostgreSQL数据库(9.3)。我有一些非常长且较大的sql查询(从raster2pgsql生成的几个MB大。)。 如何在R中以语句形式发送/执行sql查询文件? 正常方式 似乎无法通过来工作。我试图通过读取整个sql文件作为字符向量,但是这也失败了,因为dbSendQuery显然仅支持单个命令? 问题答案: 或仅用于“ SQL”部分,而不是psql命

  • 我有一个情况需要处理,我有我的liquibase按照推荐的最佳实践进行结构化。更改日志xml的结构如下所示 在我们的应用程序组中,我们运行updateSQL来生成统一的sql文件,并通过我们的DBA组执行更改。 如何在Liquibase ChangeLog中包含这些常见的重复语句。

  • 使用NetBeans创建Java程序后,称之为Addition,然后在文件夹c:\Users\Ben\Doc\NetBeansProjects\Addition\dist中成功清理并构建了一个可执行Jar文件 为什么在命令提示符下执行c:\Users\Ben Java-Jar-cp“c:\Users\Ben\Doc\NetBeansProjects\Addition\dist”Addition.J

  • 问题内容: 我有一个外部程序Otter,该程序将一些文件名作为参数并创建了一个输出文件,也将其指定为参数。因此,例如,如果我的输入是“ proof.in”,并且我希望将输出放置在“ proof.out”文件中,则可以在终端中运行以下命令: “ proof.in”文件必须与水獭可执行文件位于同一文件中。 问题是我需要Java提供此功能,因此在我的Java代码中执行以下操作: 但是在此行之后,整个用户

  • 我正试图通过C#中的webdriver执行一个javascript文件。以下是我目前掌握的情况: jsfile.js的内容包括 然而当我执行