【ポートフォリオ ♯4】CSVファイルのデータをテーブルに挿入
今回は「初めてのポートフォリオ作成」の#4です。
過去の日記はこちら
初めてのポートフォリオ作成 #3.5 - 大田区から発信するゆるゆる日記
初めてのポートフォリオ作成 #3 - 大田区から発信するゆるゆる日記
初めてのポートフォリオ作成 #2.5 - 大田区から発信するゆるゆる日記
初めてのポートフォリオ作成 #2 - 大田区から発信するゆるゆる日記
初めてのポートフォリオ作成 #1 - 大田区から発信するゆるゆる日記
初めてのポートフォリオ作成 #0 - 大田区から発信するゆるゆる日記
※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。
【目次】
環境
rails 5.2.3
ruby 2.6.3
やりたいこと
CSVファイルのデータをテーブルに挿入したい。
CSVファイルを準備
CSVファイルにデータを準備します。
テーブル構造と同じようにデータを入力します。
※カラム名とidカラムの記述は必要ありません。
CSVファイルは、アプリのdb/csvフォルダ内にコピペします。
seeds.rbを編集
アプリのdbフォルダ内にあるseeds.rbファイルを編集する。
db/seeds.rb
require "csv"
CSV.foreach('db/csv/file_name.csv', encoding: 'Shift_JIS:UTF-8') do |row|
TABLE_NAME.create(:building_type => row[0])
end
CSV.foreach('db/csv/file2_name.csv', encoding: 'Shift_JIS:UTF-8') do |row|
TABLE2_NAME.create(:building_type => row[0])
end
rails db:seedを実行
$ rails db:seed
実行後に、別テーブルにもデータを挿入したい場合は、実行したseeds.rbのコードはコメントアウトしておく。
コメントアウトしないと、同じ作業が実行され、もう一度同じデータが追加されることになる。
今後に向けて
herokuのMySQLにもCSVファイルからデータを挿入しようとしたら、n+1問題が発生しているっぽい。
あと、無料枠で対応できないデータ量を挿入してしまい、エラーが出てる。
近日中にどうにかしよう。