我正试图通过iSeries命令将AS400上的表的数据导出到另一台机器,但我处于中间。我有一个存储过程,我在其中创建CSV文件,但完成后,我需要将此文件传输到另一台机器(当然,它连接到AS400)。
在存储过程中,我使用CPYTOIMPF
命令将表数据导出为CSV,并在AS400文件系统上写入该文件。我不知道是否有将文件直接写入另一台机器的选项。
CALL QSYS2.QCMDEXC(
'CPYTOIMPF FROMFILE(LIBRARY/TABLE) TOSTMF('/QIBM/UserData/TestFolder/2.CSV') STMFCODPAG(*PCASCII) RCDDLM(*CRLF)'
);
此步骤已完成,文件将写入该目录。
现在,在完成上述命令后,我需要将此文件传输到连接到AS400的web服务器。
我该怎么做?
您可以在IBM i上使用FTP。以下是IBM知识中心的一个修改示例
这是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
的输出。脚本的第一行必须包含远程位置的用户ID和密码。
以下是来自同一知识中心参考文献的示例脚本:
ITSO ITSO <== This is the user id and password
CD ITSOLIB1
SYSCMD CHGCURLIB ITSOLIB2
GET QCLSRC.BATCHFTP QCLSRC.BATCHFTP (REPLACE
QUIT
这不应该在网络之外使用,因为用户id和密码是以纯文本发送的。这也可能是一个安全风险,因为生产用户id和密码必须以纯文本形式存储在源文件中。
此外,Scott Klement还介绍了如何在IBM i上使用ssh
、scp
和sftp
。这是一件很长的事情,所以您可能想在这里阅读。
简而言之,scp
可能是最简单的方法。但你需要:
- 请确保已安装操作系统的OpenSSH选项
- 确保您的Windows服务器设置为ssh服务器
- 设置用于传输的数字密钥。私钥在客户端,公钥在服务器端
- 使用Pase中的
scp fromfile user@host:tofile
传输文件