Rich,
>>The problem is that this driver brings the value down as CHAR(20) rather than as a number.
Previously we overcame such issues by creating a RV against source data with field type set to integer. I know you said you aren't doing the actual conversion, but it takes only a few minutes to see whether it'll help here and the humble RV has saved me days of heavy lifting in the past.
The other approach is to have the data brought into an interim SQL Server table with bad field types, then append from there into the actual table, converting field types as you go.
Finally, consider something like XCase with support for multiple databases and migration between them. SQL Server and MySQL definitely included.
"... They ne'er cared for us
yet: suffer us to famish, and their store-houses
crammed with grain; make edicts for usury, to
support usurers; repeal daily any wholesome act
established against the rich, and provide more
piercing statutes daily, to chain up and restrain
the poor. If the wars eat us not up, they will; and
there's all the love they bear us."
-- Shakespeare: Coriolanus, Act 1, scene 1