我正在使用命名管道和 Oracle SQL * Loader 将大约2000万行加载到数据库中。
管道的来源来自Java应用程序,该应用程序使用简单的 FileOutputStream 写入管道。
可以看出,Oracle SQL * Loader需要在Java应用程序上等待很多,才能生成足够的数据进行加载。
等待很好。但是,Oracle SQL * Loader在加载大约100万行后仍然存在,输出如下:
SQL*Loader-501: Unable to read file (upipe.dat)
SQL*Loader-560: error reading file
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
在这种情况下,Java将抛出IOException信息:
Exception in thread "main" java.io.IOException: Broken pipe
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:284)
它在Linux环境中运行。 知道为什么会这样吗?
感谢。