首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.db转换为.vcf

将.db转换为.vcf
EN

Stack Overflow用户
提问于 2013-09-23 17:08:55
回答 3查看 15.3K关注 0票数 4

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

代码语言:javascript
复制
gem install sqlite3
gem install vpim
path to contacts2-to-vcard.rb/contacts2-to-vcard.rb > contacts.vcf

我总是说“拒绝访问”我将文件夹设置为完全控制,但每当我运行该命令时,它就会更改为只读,顺便说一下,我使用的是windows8。或者,为什么要将.db转换为.vcf,还有其他原因吗?提亚

EN

回答 3

Stack Overflow用户

发布于 2013-10-18 08:32:44

把它从数据库中拉出来(这都是Ruby写的):

代码语言:javascript
复制
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:

代码语言:javascript
复制
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的Google联系人导入,等等。你可以送我一个水果篮。

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

票数 2
EN

Stack Overflow用户

发布于 2013-10-25 08:45:22

我一直在尝试使用Dustin van Schouwen的代码来完成这项任务。首先,我想感谢他,然后提到我需要添加/更改的一些细节,以便让它为我工作:

这一行:

代码语言:javascript
复制
db = SQLite3::Database.new path_to_contactsdb_file

我更改为:

代码语言:javascript
复制
db = SQLite3::Database.new ("contacts2.db")

就像使用前一个一样,尽管它没有给出错误,但它似乎并没有真正连接到数据库(我认为它创建了一个空数据库)。

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

代码语言:javascript
复制
csv += '"' + k + '",

如果"k“是nil,代码就会失败,所以我引入了一个If (三元语法)来解决这个问题,它工作得很好:

代码语言:javascript
复制
csv += '"' + (k == nil ? "" : k) + '",'
票数 1
EN

Stack Overflow用户

发布于 2021-09-07 17:33:44

行动有点晚了抱歉。不管怎么说,我不能给你关于ruby的提示。

但当我为自己的需求寻找解决方案时,我在这里跌跌撞撞。

我最终想出了一个python解决方案:

https://gitlab.com/Arnaudv6/contacts2.db-2-vcard

基于上面页面上记录的以前的工作。

请参考脚本开头的"todo“部分

有关到目前为止尚未实现的内容的详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18955512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档