gpt4 book ai didi

ibm-midrange - 为什么 PC 到 AS400、ASCII FTP 传输会在 AS400 端导致非常大的文件增长?

转载 作者:行者123 更新时间:2023-12-01 09:06:36 33 4
gpt4 key购买 nike

GIVEN:我充其量只是 AS400 平台的新手

问题:我们需要将可变宽度、管道分隔的 ASCII 文件从 Windows 2003 服务器传输到运行在 V6R1 上的 FTP 服务器。文件到达并正确翻译为 EBCDIC,但它们很大。一个 3.5Mb 的文件变成一个 200+ Mb 的成员。 9Gb 文件失败,因为我们遇到了某种形式的配额。

有趣的事实:当以二进制模式完成时(无翻译),文件在服务器端显示为 FILENAME.FILE,其中一个成员名为 FILENAME.MBR。传输大小正确,但由于 ASCII 编码, native 工具无法读取文件。

有趣的事实:这已经在三台 V6R1 机器上进行了尝试,结果相同。所以我很确定这是我不太了解的正常行为。

我的直觉是,服务器在向文件添加新行时正在扩展文件——但此时我真的没有更好的猜测。有没有人见过这种行为,您知道如何避免这种行为吗?

提前感谢任何抽出时间做出贡献的人。我很感激。

最佳答案

IBM i FTP 服务器既可以处理“经典”QSYS.LIB 文件系统中的对象(其中您有对象,例如驻留在单层库中的文件),也可以处理集成文件系统(分层文件系统类似于 Windows 和 Unix 中使用的文件系统)。

听起来您正在将文件发送到 QSYS.LIB 文件系统中的物理文件 (PF) 中。 PF 具有固定长度的记录,因此您可能会在大多数记录的末尾看到一些松弛空间。您可以使用 DSPFD CL 命令查看 PF 中有多少条记录和记录长度。

如果要将文件发送到 PF,FTP 服务器默认名称格式为 0,即 QSYS.LIB 文件系统。在这种模式下,您将发送到这样的 PF:

SEND myfile.txt DMCLIB/MYFILE.MYMBR

如果要将文件发送到流文件,则必须先向 FTP 服务器发送命令:

QUOTE SITE NAMEFMT 1

这会将 FTP 服务器切换到 IFS 命名模式。因此,当您发送文件时,您需要指定要将其发送到的目录。例如:

SEND myfile.txt /home/dmc/myfile.txt

如果您要发送可变长度记录,则该 IFS 流文件将没有您在物理文件中看到的松弛。

如果管道分隔文件包含单个布局,您可以使用 CPYFRMIMPF CL 命令将其映射为具有实际记录格式的 PF,这可能是更“原生”的方式做。但是,如果它是一种更复杂的文件格式,您可能必须编写一个 ILE RPG 程序来将流文件转换为它需要的任何格式。Here are some great tutorials关于从 ILE RPG 访问流文件。

另外请注意,当您从命令行 FTP 客户端连接时,您可以使用 QUOTE HELP 命令从 IBM i FTP 服务器看到一些有趣的帮助信息。

关于ibm-midrange - 为什么 PC 到 AS400、ASCII FTP 传输会在 AS400 端导致非常大的文件增长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6708106/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com