我想創建一個SQL表來存儲vCard格式的聯繫人記錄。有沒有人有這個準備好的SQL CREATE腳本?在SQL中存儲vCard/vcf聯繫人記錄
回答
我沒有腳本,但我確實有可以使用的mySQL。在此之前,我應該提到的是,似乎有兩個邏輯的方法來儲存電子名片在SQL:
存儲整個卡,讓數據庫檢索,(可能)巨大的文本字符串,而在另一部分對其進行處理你的代碼甚至客戶端。例如
CREATE TABLE IF NOT EXISTS
vcards
(name_or_letter
VARCHAR(250)NOT NULL,
vcard
文字NOT NULL,在更新CURRENT_TIMESTAMP
timestamp
時間戳NOT NULL默認CURRENT_TIMESTAMP,
PRIMARY KEY(username
)
)發動機= MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_bin;
可能很容易實現(取決於您對數據所做的操作),儘管如果您有很多條目,搜索速度會變慢。 如果這只是給你,那麼這可能會工作,(如果它是好的,那麼它是從來沒有只爲你。)然後,你可以使用你分享的一些漂亮的模塊處理vCard客戶端或服務器端,(或別人與您共享。)
我看過的vCard發展和知道有將是 在未來的/一些/時間有些變化,所以我用三個表。
第一張是卡片(這個卡片大部分與我現有的表格相連 - 如果你不需要這個卡片,那麼你的卡片可以是一個削減版本)。 第二個是卡片定義,(這在vCard中似乎被稱爲配置文件)。 最後是卡片的所有實際數據。因爲我讓DBIx :: Class(是的,我是其中之一)做所有的數據庫工作,(三個表)似乎對我很好, (雖然顯然你可以收緊類型更符合rfc2426, 但在大多數情況下每一塊數據僅僅是一個文本字符串。)
,我不歸出從人地址的原因是,我已經有一個 地址我的數據庫中的表,這三個只是非用戶的聯繫方式。
CREATE TABLE `vCards` (
`card_id` int(255) unsigned NOT NULL AUTO_INCREMENT,
`card_peid` int(255) DEFAULT NULL COMMENT 'link back to user table',
`card_acid` int(255) DEFAULT NULL COMMENT 'link back to account table',
`card_language` varchar(5) DEFAULT NULL COMMENT 'en en_GB',
`card_encoding` varchar(32) DEFAULT 'UTF-8' COMMENT 'why use anything else?',
`card_created` datetime NOT NULL,
`card_updated` datetime NOT NULL,
PRIMARY KEY (`card_id`))
ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='These are the contact cards';
create table vCard_profile (
vcprofile_id int(255) unsigned auto_increment NOT NULL,
vcprofile_version enum('rfc2426') DEFAULT "rfc2426" COMMENT "defaults to vCard 3.0",
vcprofile_feature char(16) COMMENT "FN to CATEGORIES",
vcprofile_type enum('text','bin') DEFAULT "text" COMMENT "if it is too large for vcd_value then user vcd_bin",
PRIMARY KEY (`vcprofile_id`)
) COMMENT "These are the valid types of card entry";
INSERT INTO vCard_profile VALUES('','rfc2426','FN','text'),('','rfc2426','N','text'),('','rfc2426','NICKNAME','text'),('','rfc2426','PHOTO','bin'),('','rfc2426','BDAY','text'),('','rfc2426','ADR','text'),('','rfc2426','LABEL','text'),('','rfc2426','TEL','text'),('','rfc2426','EMAIL','text'),('','rfc2426','MAILER','text'),('','rfc2426','TZ','text'),('','rfc2426','GEO','text'),('','rfc2426','TITLE','text'),('','rfc2426','ROLE','text'),('','rfc2426','LOGO','bin'),('','rfc2426','AGENT','text'),('','rfc2426','ORG','text'),('','rfc2426','CATEGORIES','text'),('','rfc2426','NOTE','text'),('','rfc2426','PRODID','text'),('','rfc2426','REV','text'),('','rfc2426','SORT-STRING','text'),('','rfc2426','SOUND','bin'),('','rfc2426','UID','text'),('','rfc2426','URL','text'),('','rfc2426','VERSION','text'),('','rfc2426','CLASS','text'),('','rfc2426','KEY','bin');
create table vCard_data (
vcd_id int(255) unsigned auto_increment NOT NULL,
vcd_card_id int(255) NOT NULL,
vcd_profile_id int(255) NOT NULL,
vcd_prof_detail varchar(255) COMMENT "work,home,preferred,order for e.g. multiple email addresses",
vcd_value varchar(255),
vcd_bin blob COMMENT "for when varchar(255) is too small",
PRIMARY KEY (`vcd_id`)
) COMMENT "The actual vCard data";
這不是最好的SQL,但我希望有所幫助。
- 1. 在iOS6中記錄爲聯繫人存儲的每個值
- 2. 試圖在Android聯繫人中存儲聯繫人條目
- 3. 在NSMutableArray中存儲聯繫人列表
- 4. 無法從通話記錄和Android中的聯繫人記錄中獲取相同的聯繫人號碼
- 5. ABAddressBook檢測聯繫人記錄更改
- 6. 在Firebase數據庫中爲後端系統存儲聯繫人
- 7. 如何存儲聯繫人信息
- 8. 存儲地址簿聯繫人的kABPersonImageFormatThumbnail
- 9. WP8聯繫人存儲啓動應用
- 10. 刪除聯繫人中的賬戶名稱後,應將「聯繫人」記錄轉換回「LEAD」記錄
- 11. 如果存在聯繫人
- 12. 在php中獲取域名聯繫人記錄
- 13. 如何從我的應用程序中保存聯繫人,該聯繫人存儲在我的數據庫中的手機聯繫人中?
- 14. 在分析中存儲聯繫人時的數據丟失
- 15. Facebook聯繫人如何存儲在手機中?
- 16. 將多個聯繫人存儲在電話號碼簿中
- 17. 聯繫人存儲在android中的格式?
- 18. 如何將聯繫人存儲在Azure表中?
- 19. SugarCRM通過API將案例關聯到聯繫人記錄?
- 20. 如何從iPhone中的NSMutableArray中獲取聯繫人的記錄
- 21. 如何將新創建的CRM聯繫人記錄複製到SQL表中
- 22. 如何在聯繫人表單的聯繫人模塊的drupal數據庫中存儲值
- 23. Android - 如何從通話記錄中獲得聯繫人?
- 24. Android:從通話記錄中獲取唯一的聯繫人
- 25. 如何從通話記錄中選擇聯繫人?
- 26. 如何獲取ios中的所有聯繫人記錄xamarin
- 27. 如何查詢Android中的聯繫人歷史記錄
- 28. 捕獲數據庫中聯繫人信息的歷史記錄
- 29. 創建聯繫人時從通話記錄中獲取號碼
- 30. 如何在SQL Server中的歷史記錄表中存儲歷史記錄
[This other question](http://stackoverflow.com/questions/38352/address-book-db-schema/11313185#11313185)也可能會幫助你。 – 2012-07-03 14:35:55