However, ideally what I'd like is to not have to specify col1, col2, col3 (so that the code is as agnostic as possible to table schema changes). Pretty much by definition here, if the table schema changes to add a field then that field should be included in the copy, not silently ignored as will be the case if I list the fields.
Well, you could poke around in information_schema to work out the columns WHERE table_name = 'myTable' AND column_name <> 'uid' and build up the SQL programmatically if it's a genuine concern. I forget the name of the tables and columns, but from memory it's pretty self explanatory.
Greg