使用eclipse数据工具执行多个sql语句(执行全部)



我使用基于Eclipse 3.7的STS 2.7.1中的Eclipse SQL Editor (Eclipse Data Tool Platform 1.9.0)。(数据库为MySQL 5.5)

如果我有SQL剪贴簿(或任何其他文件),并在其中放置一些SQL DDL语句,其中每个语句都写在以;结尾的单行上(这是eclipse中配置的分隔符),那么我可以一起执行所有语句(执行所有Ctrl+Alt+X)。这样做没有问题,eclipse将每条语句作为单个语句执行。

但是如果我有相同格式的正常插入语句(每行/语句以;结束),那么执行所有语句一起失败。Eclipse试图在一个SQL语句中处理所有语句。失败,MySql报告语法错误。

INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(1, 1544565486, 'ACTIVE', 'Root', NULL);
INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(6, 1802811831392782301, 'ACTIVE', 'Ralphz', 1);
...

你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第2行'INSERT INTO folder (id, businessId, status, title, parent_Folder_fk)'附近使用正确的语法

我可以单独执行每一行(选择一行并执行选择Alt+X)。所以我猜语句中没有失败,但是分割语句有问题。

我错在哪里?

找到问题的原因和解决方法。

Execute all不能正确地沿着分隔符分隔insert into语句(与其他语句一起工作很好),并且较新的MySQL版本不允许在一行中包含多个语句,很可能会阻止SQL注入。

我怀疑前者可以很容易地修复,但是MySQL有一个配置属性允许多行SQL语句。你只需要添加"allowMultiQueries=true"到数据源资源管理器/数据源属性/驱动程序属性/可选/附加属性。

要在table中添加多行,可以使用以下command:

INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(1, 1544565486, 'ACTIVE', 'Root', NULL), (6, 1802811831392782301, 'ACTIVE', 'Ralphz', 1);

使用plugin加载,就像这里解释的。


要插入多个表,请多测试两件事:

  1. 用多个inserts创建stored procedure;
  2. tableexecute multiple stored procedures上为每个insert创建一个stored procedure

最新更新