FTPサーバーに配置されたCSVファイルを使ってRailsアプリで処理する機会がありましたので、実装例について説明いたします。
net/ftpを使用した実装例
RubyでFTPサーバー接続するためにはnet/ftpというライブラリを使用します。
ftp = Net::FTP.new ftp.connect('接続先ホスト名') ftp.login('FTP接続ユーザ', 'パスワード') ftp.get('share/products.csv','tmp/products.csv') ftp.close
- ftp.connectでは、接続先のホスト名を指定します
- ftp.loginでは、FTPユーザ名およびパスワードを指定します
- ftp.getでは、ダウンロードしたいファイルのパスおよび、それを保存するローカルのファイルパスを指定します
- ftp.closeで接続を終了します
CSV取り込み処理の実装例
ダウンロードしたCSVファイルを使用して、取り込み処理を書いていきます。
File.open('tmp/products.csv', 'r', encoding: Encoding::WINDOWS_31J) do |file| csv = CSV.new(file, headers: false, col_sep: ',') csv.each do |row| # rowに各レコードが配列で格納されているのでparse処理を書いていきます # 例) code = row[0] name = row[1] price = row[2] Product.create(code: code, name: name, price: price) end end # 取り込み後にローカルファイルを削除 File.delete('tmp/products.csv')