2014-09-14 6 views
0

Rails 데이터베이스에 액세스하는 간단한 Ruby Gem (sqlite라고 가정 해 봅시다)을 명령 줄 실행 파일을 통해 CSV 파일로 내 보내려하고 있습니다. 행을 CSV로 변환하기 위해 데이터베이스로 이동하는 방법을 알아 내는데 어려움이 있습니다. 지금 당장 내 직감은 ActiveRecord를 조사하라고 말하고 있지만, 내가 발견 한 모든 정보는 Rails 내에서 그것을 호출하는 것이지 보석을 통해서는 호출하지 않습니다. 또한 누구나 내가 다른 DB 형식으로 가지고 있을지도 모르는 문제에 대한 통찰력이 있고 (PostgreS 또는 Mongo와 같은) 그것으로부터 변환하면 많은 도움이 될 것입니다. 이 문제를두고 머리를 감싼다.Ruby Gem을 통해 Rails DB에 액세스하는 방법

편집 : 실제 문제는 어디서부터 시작해야할지 모르겠다는 것입니다. 실행 파일 (bin/[cmd])이나 레이크 작업 (뭐든간에)에서 ActiveRecord를 호출해야합니까? 지금은 내 lib/gem.rb 파일에서 (작동하는지 보려면 puts ActiveRecord.base.connection) 호출하고 있지만 실행 파일 (bin/gem)을 통해 명령 줄에서 실행하고 "초기화되지 않은 상수 Gem :: ActiveRecord. "

답변

0

interwebs에는 이에 대한 여러 가지 해결책이 있습니다. 첫째, 테이블 또는 전체 데이터베이스를 덤프해야하는 경우 순수 SQL에서 수행 할 수 있습니다. 둘째, 그렇지 않은 경우 활성 레코드에서 정보를 가져 와서 CSV 형식으로 내보낼 필요가있는 경우 CSV 표준 라이브러리를 살펴 보는 것이 좋습니다.

http://ruby-doc.org/stdlib-2.1.2/libdoc/csv/rdoc/CSV.html

그런 다음 액티브 레코드에서 행을 끌어와 적절하게 포맷 할 수있다. CSV 라이브러리를 살펴본 후 아래의 의사 코드와 다른 점이있을 수 있습니다.

MyModel.where.....find_each do |row| 
    csv << [row.name, row.number, row.otherthing] 
end 
관련 문제