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

gem install sqlite3
gem install vpim
path to contacts2-to-vcard.rb/contacts2-to-vcard.rb > contacts.vcf

我总是说“拒绝访问”。我将文件夹设置为完全控制,但每当我运行该命令时,它就会变为只读,就像我使用windows 8一样。有什么帮助吗?或者有其他的原因将.db转换为.vcf吗?蒂亚

最佳答案

把它从数据库里拽出来(这都是红宝石的):

require 'sqlite3'

path_to_contactsdb_file = "/SAMPLE/PATH/TO/contacts2.db"

db = SQLite3::Database.new path_to_contactsdb_file

raw_contacts = db.execute("select _id,display_name from raw_contacts")
contacts = {}
raw_contacts.each do |x|
   contacts[x[1]] = {}
   contacts[x[1]]['rcid'] = x[0]
   contacts[x[1]]['nums'] = db.execute("select normalized_number from phone_lookup where raw_contact_id=" + x[0].to_s)
end

拉到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导入应用,通过google contacts导入csv,等等。你可以送我一个水果篮。
如果必须是VCF格式,那么只需更改CSV的输出语法。查一个VCF的样本文件,我不介意。

09-29 21:48