[Om2008.9] How to export Vcf Contacts from FR?

Paul paul at nlpagan.net
Sun Oct 12 09:09:50 CEST 2008

Hey Vasco,
>> You mean creating VCF's from the sqlite-data in a backup?
>> Would be interesting to play with. I could envision a slq-script that 
>> dumps the data into a file and then a bash or python script that puts 
>> things in the proper format. That's not too difficult, if sqlite plays nice. 
> I had thought about that too, but I can't find an SQLite client in OM 
> repos to create the necessary script.
> How can we talk to SQLite on OM without going the full C/C++ and 
> respective libs way? Python maybe?...

I found sqlite3 on my desktop pc, which makes things a lot easier. I 
think that is included on anyone's Linux box these days, and on 
www.sqlite.com/download there are also precompiled binaries for Mac and 
Windows. You need sqlite version 3 for the .sqlite files on the FR.

I've been playing a bit with it: copied a .sqlite file from the 
Freerunner to my machine and using sqlite3 I can pull information from 
it quite easily:

echo ".tables" | sqlite3 qtopia_db.sqlite
appointmentcategories   contactpresence         mimeTypeMapping      
appointmentcustom       contacts                pimdependencies      
appointmentexceptions   content                 servicehistory       
appointments            contentProps            simcardidmap         
callhistory             currentsimcard          simlabelidmap        
callhistorytimezone     databaseProperties      sqlsources           
categories              defaultMimeApplication  syncServers          
categoryringtone        emailaddresses          taskcategories       
changelog               favoriteservices        taskcustom           
contactaddresses        googleid                tasks                
contactcategories       locationLookup          versioninfo          
contactcustom           mapCategoryToContent 
contactphonenumbers     mimeTypeLookup       

echo ".dump contactphonenumbers" | sqlite3 qtopia_db.sqlite
CREATE TABLE contactphonenumbers (     phone_number VARCHAR(100) NOT 
NULL,     recid INTEGER,     phone_type INTEGER,     FOREIGN KEY(recid) 
REFERENCES contacts(recid) );
INSERT INTO "contactphonenumbers" VALUES('04xxxxx875',83886113,1);
INSERT INTO "contactphonenumbers" VALUES('07xxxxx693',83886209,1);
INSERT INTO "contactphonenumbers" VALUES('+316xxxx7678',83886277,257);
INSERT INTO "contactphonenumbers" VALUES('0492xxxx75',83886193,1);
INSERT INTO "contactphonenumbers" VALUES('118',83886361,1);
INSERT INTO "contactphonenumbers" VALUES('+3162xxxx44',83886365,1);
INSERT INTO "contactphonenumbers" VALUES('+3162xxxx233',83886357,1);
CREATE INDEX contactphonenumbersbytype ON contactphonenumbers 
(phone_type, phone_number);
CREATE INDEX contactphonenumbersindex ON contactphonenumbers (recid);
CREATE INDEX contactphonenumbersnumbers ON contactphonenumbers 
(phone_number, recid);
CREATE INDEX contactphnenumberscontacts ON contactphonenumbers (recid, 

I can imagine a python script on the desktop/laptop that would read all 
the dumps, disect all the insert statements, combine the information 
based on the recid attribute and after pulling all that together, write 
out Vcards.

Note that I am using qtopia. I am not certain if the structure on 
OM2008.x is identical. If that is the case, I can imagine a config file 
per distribution, mapping attribute-names to the necessary Vcard 
entries. (I have a lot of imagination.) You'd then run the python script 
with a parameter telling it what config/mapping to use.

I am sure I can write something like that. I am however not sure how 
long it would take me, as my order for 36-hour days has still not been 
fullfilled. *grin*

What do you (or anyone) think of this?


If there were no schools to take the children away from home 
part of the time, the insane asylum would be filled with 
-Edgar Watson Howe

Running on Mandriva Linux 2008 and Ubuntu 8.04

More information about the community mailing list