0

新しいRailsアプリにインポートしたいmongodbバックアップからのデータがたくさんあります(mongoを使用して開発していましたが、現在はactiverecordに切り替えています)。

私は明白なことを試しましたBSON.deserialize(doc)が、最初のレコードのみを返します。私が間違っていることはありますか?BSON ファイルを JSON または MySQL に取り込める別の使用可能な形式に変換する簡単な方法はありますか?

編集:まあ、これは最善の方法ではありませんが、確かに...しかし、ルビーシェルスクリプトを使用してそれらを変換することができました(bsondumpmongodbの一部を利用しています)。

#!/usr/bin/env ruby

bson_files = Dir['./*.bson']

bson_files.each do |file|
  tmp_file_name = file+".tmp"
  new_file_name = file+".json"

  system("bsondump "+file+" > "+tmp_file_name)
  file = File.open(tmp_file_name)
  contents = []
  file.each {|line| contents << line }
  contents = "["+contents[0..-2].join.gsub(/}\n/,"},\n")[0..-3].gsub(/ObjectId\( (.{26}) \)/,"\\1").gsub(/Date\( ([0-9]*) \)/,"\\1")+"]"
  out = File.open(new_file_name, 'w')
  out.write(contents)
end

より良い解決策はまだ高く評価されています。

4

2 に答える 2

1

なんらかのネストがある場合、現在のスクリプトは崩壊し始めます。

正直なところ、MongoDB をローカルで再作成し、スクリプトを実行してその DB から読み取り、MySQL に出力することが最善の策です。基本的には、MongoDB からオブジェクトを取得し、それらを ActiveRecord オブジェクトにマップして保存できるようにするだけです。

とにかく新しいオブジェクトを作成する必要があるため、スキーマをテストするための優れた方法を次に示します。

于 2012-01-25T05:35:37.140 に答える