Java 将sql转储导入Eclipse

Java 将sql转储导入Eclipse,java,mysql,sql,eclipse,Java,Mysql,Sql,Eclipse,我已经从MySQl工作台导入了一个转储的sql文件,但是当我尝试在Eclipse中运行时,我一直收到这个错误消息 SQLException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS/”附近使用的正确语法; /!40101第8号线老_COL处设置 但是,当我将相同的信息复制到MySQL中时,它会创建模式,并且一切正常。我做错了什么 以下是我的java代码:

我已经从MySQl工作台导入了一个转储的sql文件,但是当我尝试在Eclipse中运行时,我一直收到这个错误消息

SQLException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“SET@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS/”附近使用的正确语法; /!40101第8号线老_COL处设置

但是,当我将相同的信息复制到MySQL中时,它会创建模式,并且一切正常。我做错了什么

以下是我的java代码:

如果需要,这里是转储文件:

嗨,在mysql语句中上传dump in query可能更好

您可以将dump的全部内容作为单个SQL语句执行。尝试使用sql字符串拆分文件内容;作为分隔符,并分别执行每个语句


另一方面,最好将对statement.close/conn.close的调用放在finally子句中,以确保资源始终被释放。

我是一个初学者,因此我的评论可能不是最清晰或准确的,我的代码也不是最清晰、简洁、正确的。除此之外,这里有几点:

1不能使用executeQuerysql方法创建。因此,请使用其他选项之一。在我的实验中,我使用了:

sqlDumpArray = sqlDump.split(";");

for (int i = 0; i < sqlDumpArray.length; i++) {
    System.out.println("\nsqlDumpArray[" + i + "] is: " + sqlDumpArray[i]); // To see what's in the array.
    }

    for (int j = 1; j < sqlDumpArray.length -1; j++) { // Ugly hack because sqlDumpArray[0] and sqlDumpArray.length-1 are problematic in this alpha version of code.
       try {
          Statement statement = conn.createStatement();
          statement.addBatch(sqlDumpArray[j]);               
          statement.executeBatch(); // Maybe could move this out of the for-loop.
       }
关于SQL文件:

我去掉这些评论。 2将分号作为文件的第一个字符,即第1行第1列

我这样做了,它起作用了。如果你想要我的完整代码,请告诉我,我会发布的

干杯, 克里斯