AS/400のデータファイルをUbuntuのPostgreSQL (UTF-8)に渡す。
以前出来たことが、何故か今回別のサーバーではFTPファイル転送時にエラーが発生してうまくいきません。
最初に言っておくと、Ubuntuサーバーのターミナル上でFTPコマンドを叩いた場合は問題なく正常にいきます。
うまくいかないのはPHPスクリプトでのこと。複数のファイルを何度も転送するのでphpで行えるようにしたほうが便利なのです。
転送の流れは下記の通り:
(1)AS/400上でCCSID=943(SHIFT-JIS)のストリームファイルを用意。
(2)CPYTOIMPFコマンドで物理ファイルをストリームファイルにCSV形式で書き出し。
PHPから実行する場合は、ftp_set_option()でタイムアウトを長めに設定した上で、ftp_raw($ftp,"RCMD CPYTOIMPF ・・・・")。
(3)type c 1208 でUTF-8へのコード変換を指定。ftp_raw($ftp,"type c 1208 ")。
(4)ftp_get()でFTP_ASCIIモードでファイル転送をおこなうのだけど、今回はこの段階でエラー。エラー内容が表示されないので原因がわからない。
仕方なく、FTP_BINARYモードで転送後、file_get_contentsで読み込み、SJIS-WINからUTF-8へのコード変換後、file_put_contentsで書き込むのだけど、これってファイルサイズに制限はないのだろうか・・・? まあ、今のところ10MBのファイルでも問題無いようだからいいけど、いずれ100MBのファイル転送があるので心配だ。
Recent Comments