If you do that separately at the start of the process, (one query per custom column in the old table) then it becomes straightforward.
no, because meaning of "col1" in advert_custom_fields is different for each record. for one record it's codename might be "email" for another record it might be "engine size".