CSV to MARC21: How to Prepare Spreadsheet Catalogue Data for Koha

Learn how to prepare CSV, Excel, and TSV catalogue data for Koha by mapping spreadsheet columns to MARC21 fields before import.

CSV to MARC21: How to Prepare Spreadsheet Catalogue Data for Koha

Not every library migration starts with a clean MARC export. Some libraries have catalogue data in CSV, Excel, TSV, or another spreadsheet format.

That data may be usable, but it is not automatically ready for Koha. Koha expects bibliographic data in MARC or MARCXML for staged record import. Spreadsheet columns need to be mapped into MARC fields and subfields first.

MARCReady can help with this mapping process.

When spreadsheet data appears in migrations

Spreadsheet catalogue data often comes from:

  • small legacy library systems;
  • school library systems;
  • manual inventories;
  • old access databases;
  • vendor exports;
  • partial catalogue projects;
  • archives or special collections;
  • departmental libraries.

A spreadsheet may contain valuable information, but the structure is usually local to the old system.

Spreadsheet columns are not MARC fields

A spreadsheet might have columns such as:

Spreadsheet column Possible MARC mapping
Title 245 $a
Subtitle 245 $b
Author 100 $a or 700 $a
ISBN 020 $a
Publisher 264 $b
Publication year 264 $c or 008 date positions
Subject 650 $a
Barcode item field, often local
Call number item field or classification field
Branch item field
Item type item field

The exact mapping depends on your data and your Koha migration plan.

What makes a good spreadsheet export

Before uploading spreadsheet data, improve the file where possible.

Good spreadsheet exports have:

  • one bibliographic record per row;
  • clear column headings;
  • separate columns for separate data types;
  • ISBNs in their own column;
  • authors separated from titles;
  • item data clearly labelled;
  • no merged cells;
  • no totals or report headers;
  • no hidden columns;
  • consistent branch and item type values.

Poor spreadsheet exports usually need more review.

Common spreadsheet problems

Watch for:

  • title and author in one column;
  • multiple ISBNs in one cell;
  • inconsistent date formats;
  • subject headings separated by commas;
  • item barcodes mixed with notes;
  • branch names written in different ways;
  • call numbers split across several columns;
  • blank rows;
  • repeated header rows;
  • local status values with no Koha equivalent.

How MARCReady handles CSV, Excel, TSV, and JSON

When you upload a spreadsheet or delimited file, MARCReady analyses the column headers and proposes a mapping to MARC fields and subfields. The proposed mapping reflects Kai’s understanding of each column’s most likely MARC destination.

You review and adjust the mapping before records are exported.

This means:

  • the mapping is a starting point, not a final decision;
  • you can adjust field assignments;
  • unclear columns should be reviewed carefully;
  • columns with vague names (Column A, Field1) may need manual assignment.

The mapping review step

Before records are exported:

  1. Review each column-to-MARC mapping.
  2. Confirm that the title column maps to 245 $a.
  3. Confirm that author maps to 100 or 700 appropriately.
  4. Check that ISBNs go to 020 $a.
  5. Verify publication data mapping.
  6. Confirm that item columns are identified correctly.
  7. Check that barcode and branch values are present.

Do not skip the mapping review. Incorrect mappings produce technically valid MARC that catalogues the wrong things into the wrong fields.

After export

After exporting a MARC21 or MARCXML file from MARCReady:

  1. Stage a small test file in Koha.
  2. Review staged record counts and warnings.
  3. Import into a test environment.
  4. Check staff display.
  5. Check OPAC display.
  6. Search by title, author, and ISBN.
  7. Confirm item barcodes and branches.
  8. Adjust mapping if needed.
  9. Repeat before processing the full file.

Next Steps

More in Resources & Guides

Was this article helpful?

Thanks for your feedback!