[Ruby on Rails] CSV 파일을 사용하여 데이터를 일괄 적으로 DB로로드하는 방법

소개



seed내에서 데이터를 작성하는 것이 귀찮았기 때문에, Excel(Numbers)로 데이터를 작성해, 일괄로 DB에 읽어들일 수 있는 방법을 정리했습니다!

【환경】
나는 Mac을 이용하고 있기 때문에, 초기 탑재되고 있어, 무료로 사용할 수 있는 Numbers를 사용.
(중복 셀을 찾아내거나 복잡한 처리는 Excel을 사용.)

사용법



CSV 파일 만들기


  • 1행째에 키가 되는 임의의 이름을 붙인다. (대응하는 DB의 항목 이름과 같으면 알기 쉽다)
  • 2행째 이후에 데이터를 입력한다.



  • 3. 데이터를 작성한 후 파일 → 내보내기 → CSV를 선택


    4. 안내에 따라 다음


    5. 파일명(선택사항)과 저장처(선택사항)를 지정하여 내보내기


    seed 파일 준비



    방금 만든 파일을 DB 디렉토리에 넣습니다.

    seed 파일 편집



    db/seeds.rb
    require "csv" #csvファイルを読み込む為に記載
    
    #movieをcsv経由で追加する
    CSV.foreach('db/movies.csv', headers: true) do |row|
    #'db/movies.csv'←先ほど作成したCSVファイルのパスを指定
    # headers: true ←Numbersファイルの先頭行を読み込む
      Movie.create( #データ挿入先のテーブル名を指定
        title: row['title'],
        #title:←テーブルの項目名を指定
        #row['title']←対応するNumbersファイルの先頭行を指定
        release: row['release'],
        production: row['production'],
        screening_time: row['screening_time'],
        genre: row['genre'],
        status: row['status'],
      )
    end
    

    seed 파일 불러오기



    터미널에서 rails db:seed 실행
    rails db:seed
    

    명령을 실행 한 후 rails c로 결과를 살펴 보겠습니다!

    잘 DB에 데이터가 들어가지 않으면 다음을 시도해보십시오!


  • CSV 파일을 열어 첫 번째 줄에 열쇠가 될 어떤 이름이 있는지, 실수가 없는지 확인하십시오.
    (첫 번째 줄에는 시트 이름, 두 번째 줄에는 키가 포함될 수 있음)

  • rails db : migrate : reset → rails db : migrate → rails db : seed에서 재설정을 시도하십시오
  • CSV 파일이 기재하는 항목명의 순서와 DB의 항목 정의의 순서를 맞추어 본다
    예. DB의 항목 정의 순서가 title, release, production, ...이면
    CSV의 기재 항목 순서도 title, release, production, ...로 한다
    (내 경우에는 이것으로 잘 들어갑니다.)

  • 이상이 됩니다만 뭔가 잘못된 정보등 제공하고 있으면 코멘트란에서 전해 주세요!

    참고
    【Rails】 rake seed 명령으로 CSV 파일에서 DB로 읽는 방법

    좋은 웹페이지 즐겨찾기