Android 将.db转换为.vcf

Android 将.db转换为.vcf,android,ruby,sqlite,type-conversion,Android,Ruby,Sqlite,Type Conversion,我不小心删除了我的联系人,我没有备份,现在我得到了contacts2.db,我正在尝试将.db转换为.vcf。现在我使用Ruby来转换文件,下面是我所做的 gem install sqlite3 gem install vpim path to contacts2-to-vcard.rb/contacts2-to-vcard.rb > contacts.vcf 我总是说“拒绝访问”。我将文件夹设置为完全控制,但每当我运行该命令时,它就会变为只读,就像我使用Windows8一样。有什么帮助

我不小心删除了我的联系人,我没有备份,现在我得到了contacts2.db,我正在尝试将.db转换为.vcf。现在我使用Ruby来转换文件,下面是我所做的

gem install sqlite3
gem install vpim
path to contacts2-to-vcard.rb/contacts2-to-vcard.rb > contacts.vcf
我总是说“拒绝访问”。我将文件夹设置为完全控制,但每当我运行该命令时,它就会变为只读,就像我使用Windows8一样。有什么帮助吗?或者,是否有将.db转换为.vcf的其他原因?TIA将其从数据库中拉出(这一切都是用Ruby实现的):

将其拉到CSV:

output_filepath = "/SAMPLE/EXAMPLE/FILEPATH"    

csv = ""
contacts.each do |k,v|
 csv += '"' + k + '",'
  v['nums'].each do |num|
    csv += '"' + num[0] + '",'
  end
  csv += "\n"
end

File.open(output_filepath,"w") {|file| file.write(csv) }
然后你可以使用CSV导入应用,通过谷歌联系人导入CSV等等。。你可以送我一个果篮


如果它必须是VCF格式,那么只需更改CSV的输出语法即可。查找一个示例VCF文件,我不会感到麻烦。

我一直在尝试使用Dustin van Schouwen的代码来完成此任务。首先,我想感谢他,然后提到一些我需要添加/更改的细节,以使其适合我:

这一行:

db = SQLite3::Database.new path_to_contactsdb_file
我改为:

db = SQLite3::Database.new ("contacts2.db")
与使用前一个数据库时一样,尽管它没有给出错误,但它似乎没有实际连接到数据库(我认为它创建了一个空数据库)

我需要做的另一个改变是在另一行:

csv += '"' + k + '",
如果“k”为nil,代码将失败,因此我引入了If(三元语法)来解决它,它工作得很好:

csv += '"' + (k == nil ? "" : k) + '",'

你能提供mor信息吗?安装gem的结果是什么?与vcard.rb的
联系人2中有什么内容?为什么要通过重定向而不是使用
文件来生成
联系人.vcf
。打开
。。。我有contacts2.db,我将其更改为contacts2-to-vcard.rb,然后我需要将.vcf更改为.rb
csv += '"' + (k == nil ? "" : k) + '",'