Appearance
To bulk import items into Omeka S you install the CSV Import module (or the more powerful Bulk Import module), prepare a UTF-8 CSV whose columns map to RDF properties, map each column to a property and a data type during the import wizard, then run the job and verify the result. A 2,000-row import that would take days by hand finishes in minutes. The two rules that prevent most failures are: save as UTF-8, and make every multi-valued cell use a separator you have declared.
Which import module should you choose?
| Module | Best for | Notes |
|---|---|---|
| CSV Import | Spreadsheet-driven imports, undo support | Simplest, most common |
| Bulk Import | Large/complex sources, XML, SQL, scheduled | Pluggable readers and mappers |
For most archival and historical projects, CSV Import is the right starting point because it has a friendly wizard and a one-click undo. Reach for Bulk Import when you ingest from another Omeka S instance, XML, or need repeatable scheduled jobs.
How do you structure the CSV?
One row per item, one column per property, with a header row of human-readable names:
text
Title,Creator,Date,Subject,Rights,Media URL
"1907 Harbour Flood","A. Mason","1907-11-12","Floods|Harbours","CC BY 4.0","https://files.example.org/flood-01.jpg"
"Quayside repairs","Unknown","1908","Harbours","CC BY 4.0","https://files.example.org/repair-02.jpg"Note the Subject cell Floods|Harbours: the pipe is the multi-value separator, which you declare in the wizard so each subject becomes a separate repeated value.
How do you map columns during import?
In the wizard:
- Upload the CSV and choose its encoding (UTF-8) and column delimiter.
- Set the multi-value separator (for example
|) and confirm it matches the file. - Map each column to a property: Title to
dcterms:title, Creator todcterms:creator, Date todcterms:date, and so on. - Set each column's data type: plain text, URI, or a resource/Value Suggest type for reconciled values.
- Assign all imported items to a target item set and resource template.
Mapping is the heart of the job; get the property and data type right and the rest is mechanical.
How do you attach media in the same pass?
Add a column of HTTP URLs or server paths and map it to the media source. CSV Import will fetch remote URLs or sideload local files and attach them to the item on that row. For very large local files, use the File Sideload module so Omeka ingests from a server directory rather than re-uploading over HTTP.
How do you update items without creating duplicates?
Re-running an import in default mode creates new items every time. To update instead, run in update or replace mode and map a stable identifier column to dcterms:identifier. Omeka matches each incoming row to the existing item with that identifier:
text
Identifier,Title,Date
FLOOD-001,"1907 Harbour Flood (corrected title)","1907-11-12"Run mode = Update, match field = dcterms:identifier. The row corrects the existing item rather than duplicating it.
What goes wrong, and how do you recover?
The usual culprits:
- Encoding: non-UTF-8 files mangle accented names. Re-save as UTF-8.
- Separator mismatch: a pipe in the data but a comma declared, or vice versa.
- Stray quotes: an unescaped quotation mark breaks a row.
- Wrong data type: URIs imported as plain text never reconcile.
If an import goes wrong, open Past Imports, find the job, and click Undo. That removes exactly the items that job created, so you can correct the CSV and re-run cleanly.
Key Takeaways
- Install CSV Import for most jobs; use Bulk Import for XML, SQL, or scheduled ingests.
- Always save the CSV as UTF-8 and confirm the delimiter and multi-value separator in the wizard.
- Map every column to the correct property and data type; set URIs to reconcile.
- Attach media via a URL/path column, using File Sideload for large local files.
- Update existing items by running in update mode and matching on
dcterms:identifier. - Use Past Imports → Undo to roll back a bad job and re-run after fixing the file.
Frequently Asked Questions
Which module do I use to bulk import into Omeka S?
Use the CSV Import module for spreadsheet-driven imports, or the Bulk Import module with its Omeka S / XML / SQL readers for larger or more complex sources and for scheduled jobs.
How do multi-valued fields work in a CSV import?
Set a multi-value separator (often a pipe or a custom string) in the import settings, then put several values in one cell separated by that character to create repeated property values.
Can I attach media during a CSV import?
Yes. Add a column of media URLs or server file paths and map it to the media source; CSV Import will fetch or sideload each file and attach it to the item on that row.
How do I update existing items instead of creating duplicates?
Run the import in update or replace mode and map a column to an identifier such as dcterms:identifier so Omeka matches incoming rows to existing items rather than creating new ones.
What is the most common cause of a failed import?
Encoding and separator mismatches. Save the CSV as UTF-8, confirm the column delimiter and the multi-value separator match the import settings, and check for stray quotation marks.
Can I roll back a bad import?
Yes. Each CSV Import job is recorded, and you can undo it from the Past Imports screen, which removes the items that job created so you can fix the file and re-run.