I have just had a customer with the same problem on a massive scale. 4k real contacts and 225k 'No Name' contacts which prevented Contacts.app from starting - or at least being usable.
After some messing around I managed to get everything back with the following:
Take a backup of the entire /User/username/Library/Application Support/AddressBook folder - if the following procedure doesnt work you can just copy this back afterwards
Close the contacts app and do a restart (there are other processes that continue to run and create more No Name contacts once the app has been started once). Once restarted do not open Contacts.
Run terminal and type:
cd /User/username/Library/Application Support/AddressBook (replace username)
rm AddressBook-v22.abcddb (this filename may be different on the various flavours of MacOS - type ls -l to find the correct name)
cd MetaData
Once in this folder you will see a file per contact. In my case the files were exactly 752 bytes long (an empty contact - you MAY find your file size differs). Using the following command you can remove all files of this size from the directory:
find ./ -size 752c -print0 |xargs -0 rm
WARNING - Be careful with the above and make sure you are in the MetaData directory before running it!
For 225k contacts this took around an hour to run on an i7. Once completed you will get the prompt to type another command. You can now reopen Contacts. It may take a while to rebuild the database but everything should be back without the No Name contacts.
Hope this helps someone