Needed a quick way to batch delete my contacts after some bad imports.
assuming you know what your address book name is you can delete with the following
SELECT @addressbookid:=id FROM `oc_addressbooks` WHERE principaluri = 'principals/users/someusername' AND uri = 'someaddressbookname'; DELETE FROM `oc_addressbookchanges` WHERE addressbookid = @addressbookid; DELETE FROM `oc_cards` WHERE addressbookid=@addressbookid; DELETE FROM `oc_cards_properties` WHERE addressbookid=@addressbookid; DELETE FROM `oc_addressbooks` WHERE id=@addressbookid;
UPDATE: Additional cleanup of birthdate calendar was needed. if you know the id of your birthdate calendar use the following:
select @calendarid:=12345; DELETE FROM `oc_calendarobjects_props` where objectid in ( SELECT co.id FROM `oc_calendarobjects` co left join `oc_cards` c on SUBSTRING_INDEX(SUBSTRING(co.uri, POSITION('-' IN co.uri)+1), '.ics',1)=c.uri where co.calendarid=@calendarid and c.id is null ); DELETE co FROM `oc_calendarobjects` co left join `oc_cards` c on SUBSTRING_INDEX(SUBSTRING(co.uri, POSITION('-' IN co.uri)+1), '.ics',1)=c.uri where co.calendarid=@calendarid and c.id is null;