Given that the OP specifically mentioned mysql, I would not have posted the approach using "describe" if it didn't work in mysql.
in reply to Re^2: perl mysql - INSERT INTO, 157 columns
in thread perl mysql - INSERT INTO, 157 columns
As for your alternative (for cases where "describe" doesn't work), I would hope that any type of database covered by DBD would at least support "select * from foo limit 1", and this would be a prudent usage for the task at hand, whether or not you actually need to execute the query in order to get field names.
(BTW, thanks for the reminder about $")