Re-creating the mapping for the same job every time is a waste — and worse, a source of subtle bugs when one admin maps a column slightly differently from another. Saving the mapping to a .sdl file fixes all of that.
The five real benefits
1. Reusability
Monthly refresh from the billing system? Quarterly Account merge from a partner org? The CSV columns don’t change between runs — once you’ve mapped them, save the .sdl and load it next time with one click. No drag-and-drop, no risk of forgetting a field.
2. Consistency across people
Five admins, one mapping file. Everyone produces the exact same load. This matters for compliance audits (“show me exactly how Account loads are processed”) and for cross-team handovers when the original admin leaves.
3. Version control
.sdl files are plain text, so they belong in Git alongside the rest of the project artifacts:
/etl/
├── accounts.csv (gitignored — generated)
├── account-insert.sdl
├── account-insert.config.xml
└── run-account-load.bat
When someone changes the mapping, Git diff shows exactly which CSV column now points to which field. Code review applies to data jobs.
4. Scheduled jobs via the CLI
Data Loader’s command-line runner (process.bat / process.sh) requires an .sdl mapping. There’s no interactive mapping in headless mode. So if you ever want a nightly cron-driven Bulk API load, you have to save mappings.
5. Disaster recovery
When the original admin who built the mapping has left and no documentation exists, the .sdl is the documentation. Open it, see which column went where, recreate the CSV that fits.
Small tweak that helps a lot
Name your .sdl files after the operation, not the file:
account-insert.sdlaccount-update-from-legacy.sdlcontact-upsert-by-email.sdl
Your future self will thank you. Naming by source-CSV (e.g. accounts-jan.sdl) becomes useless after the first month.
What .sdl files DON’T save
Worth knowing what’s not in the file:
- The CSV path
- The target org / credentials
- The operation (Insert vs Update vs Upsert)
- Bulk API settings
- Success/error directories
All of that lives in the Data Loader config (the process-conf.xml for CLI runs). The .sdl is purely the column-to-field mapping.
In one line
Saving the mapping turns a Data Loader job from a manual, error-prone GUI ritual into a reproducible, scriptable, version-controlled artifact.
Verified against: Data Loader Guide — Saving and Reusing Mappings, Metadata API Developer Guide. Last reviewed 2026-05-17 for Spring ‘26 release.