Evolution

將 CSV 聯繫人導入 Evolution 3.0.2

  • July 18, 2011

我正在執行 Evolution 3.0.2(來自 Fedora 15 安裝的堆棧)。我有一個包含幾個聯繫人的 CSV 文件。該文件是由三星軟體在備份我的舊手機時創建的。

如果我轉到File-> Import...->Import a single file並選擇我的文件,我將提供三個選項File Type

  1. Evolution CSV 或 Tab(.csv、.tab)
  2. Mozilla CSV 或 Tab(.csv、.tab)
  3. Outlook CSV 或選項卡(.csv、.tab)

我嘗試使用所有三個選項進行導入,但似乎沒有一個選項有效:目標位置未修改。

三星生成的文件非常冗長。這是它的第一行:

“姓氏”,“名”,“顯示名”,“暱稱”,“讀名(姓)”,“讀名(名)”,“職稱”,“公司名”,“電話號碼1 (類型)”,“電話號碼1 (號碼)”,“電話號碼1 (熱鍵)”,“電話號碼2 (類型)”,“電話號碼2 (號碼)”,“電話號碼2 (熱鍵)”,“電話號碼3 (類型)”,“電話號碼3 (號碼)”,“電話號碼3 (熱鍵)”,“電話號碼4 (類型)”,“電話號碼4 (號碼)”,“電話號碼4 (熱鍵)”,“電話號碼5 (類型)”,“電話號碼5 (號碼)”,“電話號碼5 (熱鍵)”,“電話號碼6 (類型)”,“電話號碼6 (號碼)”,“電話號碼6 (熱鍵)”,“電話號碼 7 (類型)”,“電話號碼 7 (號碼)”,“電話號碼 7 (熱鍵)”,“電話號碼 8 (類型)”,“電話號碼 8 (號碼)”,“電話號碼 8 (熱鍵)”,“電話號碼 9 (類型)”,“電話號碼 9 (號碼)”,“電話號碼 9 (熱鍵)”,“電話號碼 10 (類型)”,“電話號碼 10 (號碼)”,“電話號碼 10 (熱鍵)”,“電話號碼 11 (類型)”,“電話號碼 11 (號碼)”,“電話號碼 11 (熱鍵)”,“電話號碼 12 (類型)”,“電話號碼 12 (號碼)”,“電話號碼 12 (熱鍵)”,“電話號碼 13 (類型)”,“電話號碼 13 (號碼)”,“電話號碼 13 (熱鍵)”,“電話號碼 14 (類型)”,“電話號碼 14 (號碼)”,“電話號碼 14 (熱鍵)”,“Email1 (類型)”,“Email1 (地址)”,“Email2 (類型)”,“Email2 (地址)”,“Email3 (類型)”,“Email3 (地址)”,“Email4 (類型)”,“Email4 (地址)”,“Email5 (類型)”,“Email5 (地址)”,“Email6 (類型)”,“Email6 (地址)”,“Email7 (類型)”,“Email7 (地址)”,“Email8 (類型)”,“Email8 (地址)”,“Email9 (類型)”,“Email9 (地址)”,“Email10 (類型)”,“Email10 (地址)”,“Web page1 (類型)”,“Web page1 (地址)”,“網頁 2 (類型)”,“網頁 2 (地址)”,“網頁 3 (類型)”,“網頁 3 (地址)”,“網頁 4 (類型)”,“網頁 4 (地址) )”,“網頁5(類型)”,“網頁5(地址)”,“網頁6(類型)”,“網頁6(地址)”,“網頁7(類型)”,“網頁7(地址)”,“網頁8(類型)”,“網頁8(地址)”,“網頁9 (類型)”,“Web page9 (地址)”,“Web page10 (類型)”,“Web page10 (地址)”,“Messenger1 (類型)”,“Messenger1 (ID)”,“Messenger2 (類型)”, “Messenger2 (ID)”,“Messenger3 (Type)”,“Messenger3 (ID)”,“Messenger4 (Type)”,“Messenger4 (ID)”,“Messenger5 (Type)”,“Messenger5 (ID)”," Messenger6 (類型)",“Messenger6 (ID)”,“Messenger7 (類型)”,“Messenger7 (ID)”,“Messenger8 (類型)”,“Messenger8 (ID)”,“Messenger9 (類型)”,“Messenger9 (ID)”,“Messenger10 (類型)”,“Messenger10 (ID)”,“Address1 (家庭/辦公室)”,“Address1 (國內/國外)”,“Address1 (郵政信箱)”,“Address1 (詳細資訊)”,“Address1 (街道號碼)”,“Address1 (市/鎮)”,“Address1(縣/地區)”,“Address1(國家)”,“Address1(郵政編碼)”,“Address2(家庭/辦公室)”,“Address2(國內/國外)”,“Address2 (郵政信箱)”,“Address2 (詳細資訊)”,“Address2 (街道號碼)”,“Address2 (市/鎮)”,“Address2 (縣/地區)”,“Address2 (國家)”,“Address2 (郵編) “,“Address3 (家庭/辦公室)”,“Address3 (國內/國外)”,“Address3 (郵政信箱)”,“Address3 (詳細資訊)”,“Address3 (街道號碼)”,“Address3 (城市/城鎮) “,“Address3(縣/地區)”,“Address3(國家)”,“Address3(郵政編碼)”,“Address4(家庭/辦公室)”,“Address4(國內/國外)”,“Address4(郵政信箱)”,“Address4 (詳情)”,“Address4 (街道號碼)”,“Address4 (市/鎮)”,“Address4 (縣/地區)”,“Address4 (國家)”,“Address4 (郵編)”,“Address5 (家/ Office)”,“Address5(國內/國外)”,“Address5(郵政信箱)”,“Address5(詳細資訊)”,“Address5(街道號碼)”,“Address5(市/鎮)”,“Address5(縣/ Region)”,“Address5(國家)”,“Address5(郵政編碼)”,“Address6(家庭/辦公室)”,“Address6(國內/國外)”,“Address6(郵政信箱)”,“Address6(詳細資訊)” “Address6(街道號碼)”,“Address6(市/鎮)”,“Address6(縣/地區)”,“Address6(國家)”,“Address6(郵政編碼)”,“Address7(家庭/辦公室)”,“Address7 (國內/國外)”,“Address7 (郵政信箱)”,“Address7 (詳情)”,“Address7 (街道號碼)”,“Address7 (市/鎮)”,“Address7 (縣/地區)”,“Address7 (國家)”,“Address7 (郵編)”,“Address8 (家庭/辦公室)”,“Address8 (國內/國外)”,“Address8 (郵政信箱)”,“Address8 (詳細資訊)”,“Address8 (街道號碼) )”,“Address8 (市/鎮)”,“Address8 (縣/地區)”,“Address8 (國家)”,“Address8 (郵編)”,“Address9 (家庭/辦公室)”,“Address9 (國內/國外) )”,“Address9 (郵政信箱)”,“Address9 (詳細資訊)”,“Address9 (街道號碼)”,“Address9 (市/鎮)”,“Address9 (縣/地區)”,“Address9 (國家)”,“Address9 (郵政編碼)”,“Address10(家庭/辦公室)”,“Address10(國內/國外)”,“Address10(郵政信箱)”,“Address10(詳細資訊)”,“Address10(街道號碼)”,“Address10(城市) /Town)”,“Address10(縣/地區)”,“Address10(國家/地區)”,“Address10(郵政編碼)”,“Birthday(日期)”,“Birthday(太陽/農曆)”,“Anniversary1(日期)” ,“Anniversary1 (太陽/農曆)”,“Anniversary2 (日期)”,“Anniversary2 (太陽/農曆)”,“Anniversary3 (日期)”,“Anniversary3 (太陽/農曆)”,“血型”,“愛好”,“鈴聲類型”,“鈴聲”,“消息鈴聲類型”,“消息鈴聲”,“照片文件”,“備忘錄”,“語音辨識”,“雙機模式”,“標題”,“中間姓名”,“後綴”,“部門”,“助理姓名”,“助理電話”,“經理”,“政府ID”,“賬戶”,“客戶ID”,“辦公地點”,“配偶”,“子女”,“類別”,“附加資訊"部門”、“助理姓名”、“助理電話”、“經理”、“政府 ID”、“賬戶”、“客戶 ID”、“辦公地點”、“配偶”、“子女”、“類別”、“其他”資訊”部門”、“助理姓名”、“助理電話”、“經理”、“政府 ID”、“賬戶”、“客戶 ID”、“辦公地點”、“配偶”、“子女”、“類別”、“其他”資訊”

我想 Evolution 期望它以不同的形式出現。有人可以指出 Evolution 期望這個文件是怎樣的嗎?然後我可以相應地調整它的列。或者以更直接的方式導入它,如果可能的話,

我對這個問題的解決方案是使用 Python csv 模組讀取 csv,然後將數據轉儲為 vcard。vcard 可以包含多個聯繫人,只需附加它們即可。

劇本:

#!/usr/bin/python

# Read a Samsung backup csv and outputs a vcf file

import csv
import sys

def convert(filename):
   reader = csv.reader(open(filename, 'rb'))

   for row in reader:
       firstname = row[1]
       lastname = row[0]
       telephone = row[9]

       print 'BEGIN:VCARD'
       print 'VERSION:2.1'
       print 'N:' + lastname + ';' + firstname
       print 'FN:' + firstname + ' ' + lastname
       print 'TEL;HOME;VOICE:' + telephone
       print 'END:VCARD'

def main(args=sys.argv):
   if len(args) != 2:
       print "Usage:"
       print args[0] + " filename"
       return 1

   convert(args[1])
   return 0

if __name__ == '__main__':
   sys.exit(main())

用法如下:

./script.py myfile.csv > mycontacts.vcf 

然後將生成的vcf文件導入Evolution。醜陋,但有效。

引用自:https://unix.stackexchange.com/questions/16849