巨大的字符串使得Netbeans中的Java类不负责任

巨大的字符串使得Netbeans中的Java类不负责任,java,sql,Java,Sql,我有一个非常大的SQL查询,在Java字符串中具有以下结构 BEGIN; couple of thousand of INSERT INTO END; 由于文件大小的原因,在Netbeans IDE中保存此字符串的类几乎没有响应。存储、加载和运行如此大的查询的最佳方式是什么?这不是一个大查询,而是许多小查询。除非你尝试另一种方法,否则你对此无能为力。写出一个文件并使用大容量加载实用程序将数据输入数据库可能是最好的选择。假设您希望从Java内部运行该命令(而不是使用db的大容量加载二进制文件)

我有一个非常大的SQL查询,在Java
字符串中具有以下结构

BEGIN;
 couple of thousand of INSERT INTO
END;

由于文件大小的原因,在Netbeans IDE中保存此
字符串的类几乎没有响应。存储、加载和运行如此大的查询的最佳方式是什么?

这不是一个大查询,而是许多小查询。除非你尝试另一种方法,否则你对此无能为力。写出一个文件并使用大容量加载实用程序将数据输入数据库可能是最好的选择。

假设您希望从Java内部运行该命令(而不是使用db的大容量加载二进制文件),您可以将SQL存储在单独的(资源)文件中,将该文件读入字符串形式的Java,然后对数据库执行该命令。另一个好处(除了不再在Java文件中之外)是,您可以将资源文件命名为这样一种方式,即让IDE将其格式化为SQL(假设IDE这样做)。

我强烈建议使用ETL工具来完成这一点。他们有散装装载机组件,这将使你的生活更容易。在过去,我使用过DataStage和Pentaho(水壶)来处理类似的事情。水壶是开源的。你可以从下载。例如,这里有一个简短的信息

您可能会发现以下内容很快(假设所有插入都在同一个表中)

开始
插入
挑选
联合所有选择
联合所有选择
...
联合所有选择
结束
这是一个大插件,而不是1000个小插件。这减少了许多开销,并且通常运行速度显著加快

然而,令人痛苦的是,这也意味着进入事务日志的条目更大。当你有数以百万计的插入时,你可能会发现分批插入会变得更快

  • 将许多小型业务合并为一个的联盟

  • 几个较小的操作对事务日志的影响较小。
    [可能是数万/十万条记录,或更多]


    • 如果我正确理解了您的问题,您有一个非常大的Java源文件,其中包含一个(或多个)字符串和数千个小insert语句?
      在这种情况下,作为第一步,您应该考虑将这些语句外部化为一个单独的文本文件。在Java代码中,然后使用模板引擎加载包含语句的文件。但是,如果你想有效地运行许多小插件,你可能想考虑使用批处理加载程序或ETL工具(水壶或Apache CAMEL)。他将这些查询以明文形式存在于Java源文件中,这导致文件大小变得如此之大,以至于编辑器在编辑Java源文件时响应速度变慢。将所有SQL外部化到一个单独的文件中,而这个文件不是在编辑器中打开的,这就是正确的答案。RHSeeger已经回答了这个问题。@BalusC,将SQL放在一个单独的文件中,这样IDE就可以正常工作了,但是在
中运行几千次INSERT不会很快或很有效。使用大容量加载是
的最佳选择
,它将分离文件,以便IDE能够响应,并将数据快速有效地输入数据库。我同意这一部分:)但这不是提问者实际问的问题。是的,但我的回答也解决了“已问”问题和“未问”问题。
BEGIN
   INSERT INTO <my_table>
             SELECT <blah1>
   UNION ALL SELECT <blah2>
   UNION ALL SELECT <blah3>
   ...
   UNION ALL SELECT <blah1000>
END