2011-03-31 3 views
0

지난 주에 응용 프로그램을 배포했습니다. 문제는 프로덕션 환경으로 마이그레이션하려는 개발 데이터가 있지만 프로덕션 데이터베이스가 이미 사용 중이라는 것입니다. 따라서 SQL을 가져오고 내보내는 것만으로도 ID가 더 이상 일치하지 않는 문제가 발생할 수 있습니다.개발 데이터를 생산 데이터에 병합

이제 저는 모든 데이터를 기본 객체로로드하는 것을 열망했습니다.하지만 하나의 기본 객체는 없습니다. has_many 연관 만있는 네 개의 객체와 여러 개의 belongs_to 연관이있는 많은 객체가 있습니다.

우리가 원하는 것을 얻기 위해 사용할 수있는 다른 내보내기 및 가져 오기 방법이 있습니까?

답변

0

dev 데이터를 yaml (this plugin does that 및 트릭을 수행하는 다른 사용자가있을 수 있음)에 덤핑 한 다음 db/seeds.rb를 사용하여 내용을로드하는 스크립트를 작성하고 레일즈 모델을 사용하여 다시 작성하십시오 rake db : seed

rake db : seed는 데이터를 채우지 않습니다 (db/seeds.rb를로드합니다. 소스 herehere 참조).하지만 데이터를 백업해야합니다. anything :)

나는 샌드 박스 앱과 db 복제본을 가지고 놀고 프로덕션 환경에서 이것을 실행하기 전에 제안 할 것입니다.

+0

확실치 않지만 DB 시드가 기존 데이터와 작동하지 않을 것이라고 생각합니다. 기존 데이터를 잃어 버릴 까봐 걱정이됩니다. – Andrew

+0

rake db : seed 자체는 기존 데이터를 정리하지 않으며 단지 db/seeds.rb를로드합니다. db/seeds.rb는 앱 환경에 대한 액세스 권한이있는 스크립트가있는 곳입니다. yaml 고정물을 적재하지 못하게하는 것. 여기에 작업 소스가 있습니다. https://github.com/rails/rails/blob/master/activerecord/lib/active_record/railties/databases.rake#L286 – oliverbarnes

+0

어쨌든 데이터를 백업하십시오 : d는 샌드 박스 앱과 db 복제본을 가지고 놀고 프로덕션 환경에서 실행하기를 제안합니다. 먼저 콘솔에서 명령문을 실행하면 스크립트를 함께 쓸 때 도움이 될 수 있습니다. – oliverbarnes

0

개발 데이터를 CSV, yaml, XML 또는이 형식에 사용할 형식으로 내 보냅니다. 그런 다음 수행 할 작업을 선택할 수 있습니다.

데이터를 한 번만 가져 오는 경우 마이그레이션을 사용하여 지정된 파일에서 데이터를로드 할 수 있습니다. 소스 컨트롤에 체크인 할 때 파일을 반드시 포함시켜야합니다.

콘솔 (스크립트/콘솔 생산)을 사용하여 데이터를로드하고 수동으로 명령을 입력하십시오. 들어가는 데이터를 검토하고 필요에 따라 조정할 수 있기 때문에 이것은 더 좋은 방법 일 수 있습니다.

이 작업을 한 번 더 수행하려면 파일 이름이나 다른 식별자가 주어지면 데이터를 데이터베이스에로드하는 레이크 작업을 작성하십시오.

+0

데이터가 너무 복잡하여이 솔루션에 적합하지 않다고 생각합니다. 예를 들어, 8 개의 belongs_to 연관이있는 250 개의 레코드가있는 모델이 있습니다. 응용 프로그램 자체에서 데이터를 다시 만드는 것이 콘솔에서 수동으로 수행하는 것보다 쉽습니다. 당신은 저에게 아이디어를 주었지만 나중에 이것에 대해 자세히 설명 할 것입니다. –

관련 문제