I suggest making a custom page template, but creating your own custom query and loop that excludes existing posts already with a ‘alphabetical_letter’ term assigned. Set the posts per page argument to a good quantity of posts, but not so many that the script times out. If you reload the page enough times, eventually all posts will be processed.
You can also override the allowed script time with set_time_limit() (this is normally set in php.ini to 30 seconds). Send some occasional status messages to the browser or else it will also time out regardless of the PHP time allowed.
I’d advise first limiting the posts processed to a small quantity until you are sure your script works infallibly. Then you can turn it loose on large chunks of data. Also make a backup of your DB before making significant changes.
]]>