2011-07-15 16 views
3

假設:我是AS400平臺上的新手,最好爲什麼PC-to-AS400,ASCII FTP傳輸會在AS400端造成非常大的文件增長?

問題:我們需要可變寬度,管道分隔的ASCII文件從Windows 2003服務器轉移到V6R1運行FTP服務器。文件到達並被正確地轉換爲EBCDIC,但它們非常龐大。一個3.5Mb文件成爲一個200多Mb的成員。 9Gb文件失敗是因爲我們遇到了某種配額方式。

有趣的事實:當在二進制模式下完成(不翻譯)時,該文件在服務器端出現FILENAME.FILE,其中一個成員名爲FILENAME.MBR。傳輸大小是正確的,但由於ASCII編碼,本地工具無法讀取該文件。

有趣的事實:這已在三臺V6R1機器上嘗試,結果相同。所以我相當肯定這是正常的行爲,我只是不太明白。

我的直覺是,服務器擴展文件,因爲它增加了新的行 - 但我真的沒有更好的猜測,在這一點上。有沒有人見過這種行爲,並且你知道如何避免它?

在此先感謝任何花時間貢獻的人。我很欣賞它。

+0

記錄長度設置爲標題中最長的一行,然後每一行將太快地加上該空格。 –

回答

6

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服務器中看到一些有趣的幫助信息。

+1

那麼,物理文件的鬆弛是導致大尺寸的原因?正如您所提到的,我們使用NAMEFMT 1發送到物理文件,以便中檔人員可以以經典的方式閱讀它。 –

+1

是的,這是我的猜測。如果您知道平均記錄的寬度,並將其與物理文件的記錄長度進行比較,您應該瞭解鬆弛量。另外請注意,如果您發送給PF,則您使用的是NAMEFMT 0. – dmc

+0

從技術上講,只要服務器未明確配置爲強制將'NAMEFMT 0'作爲默認值,就不需要'QUOTE SITE NAMEFMT 1' *和**您在FTP腳本中對任何文件系統路徑的初始引用都是「NAMEFMT 1」格式。默認情況下,服務器將自動切換到兩種格式之一的首次使用。在設置了任何初始格式後,只能通過向服務器發出一個'NAMEFMT'命令來進行更改。 – user2338816

3

AS/400上有許多file systems。標準文件系統真的是DB/2。庫是數據庫/模式,物理文件是表,成員是table partition,邏輯文件是索引/視圖。 IFS是基於正常流的文件系統。

Ascii模式會將以EOL字符(CR/LF)結尾的文本映射到單個物理文件記錄。二進制模式會忽略EOL字符,並儘可能多地處理每條記錄中的原始數據。欲瞭解更多信息,請參閱File Transfer Protocol reference

使用DSPFD命令查看文件定義。 最大記錄長度將指示固定長度記錄大小。乘以要上傳的記錄數來計算一次上傳後需要多少空間。 「中檔人士」有機會創造了一個荒謬漫長的紀錄長度的檔案。對他們來說,重新創建一個更合適的記錄長度的文件應該是微不足道的,這樣你就不會浪費太多空間。

創建文件時會定義一個最大記錄數,以防止磁盤被填滿。您可以在DSPFD命令中找到這些值作爲初始記錄數,增量記錄數最大增量數。這些值可以根據需要使用CHGPF命令和SIZE參數進行更改。

另一種選擇是上傳到IFS文件系統並讓'中檔人員'直接從IFS處理文件。這是一個Scott Klement教程,用於Working with the IFS in RPGIV