Optimal interface for specifying a mapping between known field set and fields discovered in CSV file?

We are building a data import feature in which our users will open an arbitrary CSV file and define a one-to-one mapping of its fields to a list of known fields in our database. The list of fields is very long (around 30 known fields and an arbitrary number in the CSV [though likely between 20 and 50 in the CSV).

A naive implementation would be simply laying out all of the discovered fields in a vertical list paired with combo boxes for selecting the known-field mapping.

[discovered 1] [combo]
[discovered 2] [combo]
etc

Or horizontally,

[discovered 1] [discovered 2] [etc...]
[combo]        [combo]        [combo]

The issues here are:

  • Long list makes it impossible to view the entire mapping without scrolling, for example to check if a known field has already been mapped.
  • Preventing multiple selection of known field or allowing an assignment to be changed.

Possibly a better approach would be similar to the above, except with draggable boxes for the known fields that can be positioned adjacent to the discovered field.

Another issue to consider is CSV files without header rows: how to identify each discovered field?

Are there existing examples out there of a good solution to this interaction?