通过nzSQLException读取超时错误

时间:2018-01-22 09:20:35

标签: java netezza

在使用Netezza数据库的java代码时, 得到org.netezza.error.NzSQLException: Read timed out的错误
基本上,java代码生成一堆csv文件, 生成每个CSV文件后,CSV将加载到netezza数据库中。 我使用下面的查询(Java代码剪辑)进行CSV上传

INSERT INTO "+table + " SELECT * FROM EXTERNAL '"
                + CSVFileName
                + "' USING ( MAXERRORS 0 DELIMITER ',' Y2BASE 2000 ENCODING 'internal' REMOTESOURCE 'JDBC' ESCAPECHAR '\' ) ";

适用于大多数文件,&然后突然我开始收到read timed out错误 我的csv文件包含375000到750000行(文件大小约为28到56 MB)。

Java代码使用8个线程来创建这些CSV,有可能对于同一个表,两个线程正在尝试加载数据。 Java代码将从Windows机器运行 我的初步猜测是JDBC驱动程序可能有一些时间限制来读取CSV文件。

关于如何避免出现此错误/或任何更好的方法的任何想法。

1 个答案:

答案 0 :(得分:0)

如果它适用于其他文件,但不适用于较大的文件,我可以考虑一些可能性:

  1. 你收到的netezza盒子不能足够快地接收数据(虽然我可以说少于100MB并不多)
    • 是您的目标新西兰系统VMware和/或慢速网络/防火墙
  2. 源文件无法快速访问
    • McAfee或其他反病毒扫描程序阻止他提交文件
    • 该文件位于sloooow / overloaded disk
    • 你程序中的另一个帖子阻塞文件的时间太长了(你过早地加载到netezza)
  3. 超时设置得非常低
    • 说1秒
  4. 我会尝试将超时时间增加到1000秒,以查看问题是否消失,然后向下工作直到找到限制。 其次,我会尝试关闭JAVA代码中的所有并行性来创建文件并查看它是否消失

    请让我们知道它是怎么回事