使用Java将AS400.MBR文件读入平面文件
这就是我一直在努力实现的目标 我们正在开发一个名为GoAnywhere的供应商工具,该工具在触发一个select查询后从DB2数据库读取数据,创建一个文件,将数据写入其中,然后将其压缩并发送到一台机器上,我们的ETL工具可以在该机器上读取数据 我已经能够在几乎相同的时间内实现GA的功能,事实上,通过动态使用JSCH和jaring-un-jaring,在6.5GB文件上比上述工具快5分钟。这将读取和写入文件的时间从以前的32分钟缩短到现在的27分钟 但为了满足新的SLA要求,我们需要进一步将时间缩短到我现有时间的一半,大约13分钟左右 为了实现上述目标,我已经能够直接读取.MBR文件,并在13分钟或更短的时间内将其推送到Linux机器上,但该文件的格式不是明文。 我想知道如何使用Java或AS400命令将.MBR文件转换为纯文本格式,而不触发SQL使用Java将AS400.MBR文件读入平面文件,java,ibm-midrange,Java,Ibm Midrange,这就是我一直在努力实现的目标 我们正在开发一个名为GoAnywhere的供应商工具,该工具在触发一个select查询后从DB2数据库读取数据,创建一个文件,将数据写入其中,然后将其压缩并发送到一台机器上,我们的ETL工具可以在该机器上读取数据 我已经能够在几乎相同的时间内实现GA的功能,事实上,通过动态使用JSCH和jaring-un-jaring,在6.5GB文件上比上述工具快5分钟。这将读取和写入文件的时间从以前的32分钟缩短到现在的27分钟 但为了满足新的SLA要求,我们需要进一步将时间缩
感谢您的帮助。您错误地认为IBM i上的“文件”就像Windows/Unix/Linux上的文件 不是 与IBMi中的所有其他对象类型一样,它是一个具有定义良好的接口的对象 在*文件对象的特定情况下,它是一个数据库表。DB2fori不是安装在操作系统顶部的附加DBMS;DB2fori只是他们给集成到操作系统中的DBMS起的名字。用户程序不能像Windows/Unix/Linux上的文件那样直接打开存储空间。您必须通过操作系统提供的接口 有两个可用接口,记录级访问(RLA)或SQL。两者都可以从Java应用程序中使用。RLA由
com.ibm.as400.access.AS400File
类提供。SQL访问由JDBC类提供
SQL可能提供最好的性能,因为您使用RLA处理一组记录,而不是一次处理一个记录
查看各种可用的与性能相关的
从性能角度来看,单个进程不可能充分利用系统,即CPU使用率不会达到100%,磁盘活动也不会超过60-80%
在这种情况下,最好的办法是将流程分解为多个流程。您需要某种方法将每个进程限制为一组选定的记录。可能是主键隔离。这将增加一些开销,除非记录按主键顺序排列。如果表中没有已删除的记录,则使用RRN()按物理顺序隔离可能会起作用。但请注意,在较旧版本的操作系统上,使用RRN()需要进行完整的表扫描 您错误地认为ibmi上的“文件”就像Windows/Unix/Linux上的文件 不是 与IBMi中的所有其他对象类型一样,它是一个具有定义良好的接口的对象 在*文件对象的特定情况下,它是一个数据库表。DB2fori不是安装在操作系统顶部的附加DBMS;DB2fori只是他们给集成到操作系统中的DBMS起的名字。用户程序不能像Windows/Unix/Linux上的文件那样直接打开存储空间。您必须通过操作系统提供的接口 有两个可用接口,记录级访问(RLA)或SQL。两者都可以从Java应用程序中使用。RLA由
com.ibm.as400.access.AS400File
类提供。SQL访问由JDBC类提供
SQL可能提供最好的性能,因为您使用RLA处理一组记录,而不是一次处理一个记录
查看各种可用的与性能相关的
从性能角度来看,单个进程不可能充分利用系统,即CPU使用率不会达到100%,磁盘活动也不会超过60-80%
在这种情况下,最好的办法是将流程分解为多个流程。您需要某种方法将每个进程限制为一组选定的记录。可能是主键隔离。这将增加一些开销,除非记录按主键顺序排列。如果表中没有已删除的记录,则使用RRN()按物理顺序隔离可能会起作用。但请注意,在较旧版本的操作系统上,使用RRN()需要进行完整的表扫描 猜测发生的情况是,源表中存在压缩的十进制字段,这些字段没有通过您自己开发的读取表的方法进行解压缩 有几种可能性
猜测正在发生的事情是有大量的数据