We use strongly typed DataSets in our application. When importing data we use the convenient DataSet.Merge() operation to copy DataRows from one DataSet to another.
DataSet.Merge()
The obvious answer is 'do it in the DB' -- I'll assume it's not applicable in your case.
You should try to use a row loop. This can be quite performant if the tables you are merging are sorted.
http://en.wikipedia.org/wiki/Merge_algorithm