将文件从AS400传输到同一网络中的另一台计算机

问题描述:

我试图通过iSeries命令将AS400上的表的数据导出到另一台计算机,但我在进程中间堆叠。我有一个存储过程,我在其中创建CSV文件,但完成后我需要将此文件传输到另一台机器(当然连接到AS400)。将文件从AS400传输到同一网络中的另一台计算机

在存储过程中,我使用CPYTOIMPF命令将表数据导出为CSV,并将该文件写入AS400文件系统。我不知道是否有将文件直接写入另一台机器的选项。

CALL QSYS2.QCMDEXC(
'CPYTOIMPF FROMFILE(LIBRARY/TABLE) TOSTMF('/QIBM/UserData/TestFolder/2.CSV') STMFCODPAG(*PCASCII) RCDDLM(*CRLF)' 
); 

此步骤已完成,并且该文件被写入该目录。

现在我需要将此文件传输到连接到AS400的Web服务器,而无需在完成上述命令之后。

我该怎么做?

+0

另一台机器的操作系统是什么? – mao

+0

windows server 2008 R2 – user715079

+0

所以你的问题是如何做AS400(i系列)和Windows服务器之间的程序文件传输?你是否计划将i-series box压缩到Windows,或者Windows从i-series中拉出文件?如果您希望i系列进行推送,请考虑SFTP(如果Windows服务器为其运行服务)。 – mao

您可以在IBM i上使用FTP。下面是从IBM Knowledge Center

此变形例是CL程序

PGM 
    OVRDBF FILE(INPUT) TOFILE(MYLIB/QCLSRC) MBR(FTPCMDS) 
    OVRDBF FILE(OUTPUT) TOFILE(MYLIB/QCLSRC) MBR(OUT) 
    FTP  RMTSYS(SYSxxx) 
ENDPGM 

此程序将覆盖FTP客户端的一个脚本在MYLIB/QCLSRC构件FTPCMDS的输入,以及FTP客户端的输出,以MYLIB/QCLSRC会员OUT。脚本的第一行必须包含远程位置的用户标识和密码。

下面是来自同一个知识中心参考示例脚本:

ITSO ITSO <== This is the user id and password 
CD ITSOLIB1 
SYSCMD CHGCURLIB ITSOLIB2 
GET QCLSRC.BATCHFTP QCLSRC.BATCHFTP (REPLACE 
QUIT 

这应该不是你的网络中的用户ID的密码以明文形式发送以外使用。由于生产用户标识和密码必须以纯文本形式存储在源文件中,因此也可能存在安全风险。


此外,斯科特·克莱门特对如何在IBM i使用sshscpsftp介绍。这是一件相当长的事情,所以你可能想要阅读它here

一个简短的总结,scp可能是最简单的方法。但您需要:

  1. 确保安装了操作系统的OpenSSH选项。
  2. 确保您的Windows服务器设置为ssh服务器。
  3. 设置用于传输的数字密钥。私钥在客户端,公钥在服务器端。
  4. 在Pase中使用scp fromfile [email protected]:tofile来传输文件。