繁体   English   中英

如何从 Java 应用程序将 SQL 文件(存储在我的 Java 项目的源文件夹中)加载到 MySQL 中?

[英]How to load a SQL file (stored in the source folder of my Java project) into MySQL from a Java Application?

我想在运行时从我的 Java 应用程序将一个 SQL 文件(存储在我的 NetBeans Java 项目的源文件夹中)加载到 MySQL 中。 我怎样才能做到这一点?

SQL 文件大小为 15.15 MB,我想知道是否可以复制到字符串中? 或者,如果我无论如何设法将它复制到一个字符串(尽管它可能会抛出内存不足错误),如何一次执行多个命令(因为 SQL 文件包含许多命令)。

我想在不使用任何其他工具的情况下做到这一点。 只需使用 Java 中预先存在的库和类(与 JDK 捆绑)。

我发现如果不添加其他工具和库,可能还不可能做到这一点。

我们可以通过将 SQL 文件拆分成更小的 SQL 文件来做到这一点,每个文件只包含一个 SQL 命令,然后启动一个循环来一次执行所有这些文件。 我试过了,它有效。 确实如此。

以下是我用来执行此操作的代码:

import javax.swing.* ;
import java.sql.* ;
import java.io.* ;

public class LoadSQLFile {
    public static void main(string args[ ]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    String password = JOptionPane.showInputDialog(null, "We need your MySQL Password to run the application. Please enter it here.", " MySQL Password ?", JOptionPane.QUESTION_MESSAGE) ;
                    Class.forName("java.sql.Driver") ;
                    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/MyDB", "root", password) ;
                    Statement stmt = conn.createStatement() ;
                    int i = 0 ;
                    for(i=1;i<=16;i++) {
                        FileReader fr = new FileReader("src//sql_files//BCK"+i+".sql") ;
                        BufferedReader br = new BufferedReader(fr) ;
                        stmt.execute(br.readLine()) ;
                    }
                    stmt.close();
                    conn.close();
                    JOptionPane.showMessageDialog(null, " Records Successfully Inserted into database !", "Success !", 1) ;
                } catch(Exception e) {
                    JOptionPane.showMessageDialog(null, e, "ERROR", JOptionPane.ERROR_MESSAGE) ;
                }
            }
        });
    }
}

我要在名为“sql_files”的包内执行存储在项目源文件夹中的 SQL 文件。 文件的名称是 - BCK1.sql、BCK2.sql、....、BCK16.sql。 每个文件的第一行只包含一个 SQL 文件。 它对我来说很好。

我为此使用了 MySQL JDBC 驱动程序。

我认为ScriptUtils.executeSqlScript可以帮助你。

使用以下代码:

public static final Path SQL_QUERY_FILE_PATH = Paths.get("SqlFolder", "productQuery.sql");

String sqlQuery = FileResourceUtil.readFileAsString(getClass(), SQL_QUERY_FILE_PATH.toString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM