繁体   English   中英

在Rails应用程序中使用mongodb备份中的数据…即使用ruby将BSON转换为JSON?

[英]Use data from mongodb backup in rails app… i.e. convert BSON to JSON using ruby?

我有大量来自mongodb备份的数据,我想导入到一个新的Rails应用程序中(正在使用mongo进行开发,现在又切换回activerecord)。

我尝试了显而易见的BSON.deserialize(doc)但它仅返回第一条记录。 有什么想法我做错了吗? 有没有一种简单的方法可以将BSON文件转换为JSON或另一种可用格式以导入MySQL?

编辑:好吧,我敢肯定这并不是最好的方法,但是我已经设法使用ruby shell脚本(利用bsondump ,mongodb的一部分)将它们转换了。

#!/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

更好的解决方案仍然受到赞赏。

如果您有任何形式的嵌套,则当前脚本将开始崩溃。

老实说,最好的选择就是在本地重新创建MongoDB,然后运行脚本以从该数据库读取并输出回MySQL。 基本上只是从MongoDB中拉出对象并将它们映射到ActiveRecord对象中,以便您可以保存它们。

无论如何,您都将需要创建新对象,因此这是一种测试架构的好方法。

bson对象有一个名为to_json的方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM