将sql转储导入Eclipse

时间:2011-12-05 14:03:51

标签: java mysql sql eclipse

我从MySQl Workbench导入了一个转储的sql文件,但是当我尝试在Eclipse中运行时,我不断收到此错误消息。

SQLException:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'SET @OLD_CHARACTER_SET_RESULTS = @@ CHARACTER_SET_RESULTS /附近使用正确的语法; / !40101在第8行设置@OLD_COL'

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

这是我的java代码: http://pastebin.com/B1RVMYUd

如果你需要它,那么是dumpfile: http://pastebin.com/RWpG0BEX

3 个答案:

答案 0 :(得分:0)

你好,最好在mysql语句中的查询中上传转储

答案 1 :(得分:0)

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

(顺便说一句,最好将statement.close / conn.close的调用放在finally子句中,以确保资源始终被释放。)

答案 2 :(得分:0)

我是初学者,所以我的评论可能不是最明确或最准确,也不是我的代码最清晰,最简洁,最正确等等。有了这些,这里有一些事情:

1)您不能使用executeQuery(sql)方法来创建。所以使用其他选项之一。在我的实验中,我使用了:

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文件:

1)删除评论。 2)将分号作为文件的第一个字符(即第1行,第1列)。

我做到了,它有效。如果您需要我的完整代码,请告诉我,我会发布它。

干杯, 克里斯