行動すれば次の現実

テック中心の個人ブログ

FTPでCSVファイルをダウンロードしてアプリに取り込む処理の実装例 | Rails

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')