Systems and records
Salesforce Data Loader export: a step-by-step guide with a manifest
By SourceX Editorial · Updated
Short answer
Salesforce Data Loader is Salesforce's desktop client for bulk import and export. To export, open it, log in, choose Export (live records) or Export All (also soft-deleted and archived activity records), pick an object, select fields or write SOQL, and save a CSV. For a complete, repeatable export, fix settings first (UTF-8, time zone, batch size, Bulk API) and log every run in a manifest with counts and checksums.
Key takeaways
- Salesforce Data Loader is a desktop client for bulk export to CSV; it needs Java 17 or later and a user with API Enabled and read access.
- Export returns live records; Export All also returns soft-deleted and archived activity records, which a history inventory usually needs.
- Set UTF-8 output, time zone, batch size and Bulk API before the first run and keep them fixed for the whole inventory.
- A complete CRM history includes field history objects, activities and file metadata, each with relationship IDs intact; support objects have their own guide.
- Log every run in a manifest with the exact SOQL, record count, date range, file name, SHA-256 checksum, settings and operator.
- Data Loader is not the Data Export Service or dataloader.io; pick it when you need filtered, repeatable, object-level exports.
What is Salesforce Data Loader and when is it the right export tool?#
Salesforce Data Loader is a client application from Salesforce that inserts, updates, upserts, deletes and exports records in bulk through the API, writing exports to CSV files. It is the right tool when you need object-level exports you control field by field, with SOQL filters, Export All for deleted and archived rows, and a run you can repeat exactly.
Salesforce's current guide says Data Loader supports CSV files of up to 150,000,000 records and suggests the web-based import wizards for smaller jobs, such as fewer than 50,000 records. Larger orgs still export big objects in date slices, which also makes each file easier to verify.
Data Loader runs on your machine and needs a Java runtime. Salesforce officially supports it on Windows and macOS; the open-source project documents a Linux route, but Linux is unsupported. Batch (command-line) mode is officially supported only on Windows, which matters if you want scheduled, scripted exports.
Data Loader vs Data Export Service vs dataloader.io: which should you use?#
Use Data Loader for controlled, object-by-object exports with SOQL; use the Data Export Service for a whole-org backup ZIP on a weekly or monthly cadence; use dataloader.io if you want a browser-based tool with no install. They are different products and not interchangeable for a documented dataset inventory.
The Data Export Service (Setup, Data Export) packages CSV files for the whole org on a weekly or monthly schedule; see what the Salesforce weekly export includes and leaves out for its scope and limits.
Dataloader from MuleSoft (dataloader.io) is a separate, browser-based product that needs no installation. Salesforce's own documentation contrasts it with the downloadable Salesforce Data Loader. This guide covers the desktop Data Loader only.
| Question | Data Loader (desktop) | Data Export Service | dataloader.io |
|---|---|---|---|
| What it is | Salesforce desktop client for bulk import and export, using the SOAP or Bulk APIs | Setup feature that packages org data as CSV ZIP files | Browser-based Dataloader from MuleSoft, separate from Salesforce Data Loader |
| Scope per run | One object per run, any fields you can read | Objects you select, in one package | Task-based; check current product docs |
| Filtering | Full SOQL WHERE clauses and date ranges | Not a SOQL tool | Check current product docs |
| Deleted and archived rows | Export All includes soft-deleted and archived activity records | Depends on edition and package | Check current product docs |
| Scheduling | Batch mode with process-conf.xml (officially Windows only) | Weekly or monthly | Scheduled tasks; check current product docs |
| Best fit | A documented, repeatable dataset inventory | A periodic whole-org snapshot | Occasional exports without installing software |
- 01Your work records
- 02Personal details removed
- 03You approve the release
- 04Licensed to AI developers
How do you install Data Loader and log in?#
Install a supported Java runtime first, download Data Loader from Salesforce, run the installer, then log in to Production or Sandbox. Salesforce's current installation guide asks for Java Runtime Environment 17 or later (for example Azul Zulu or Eclipse Temurin) and a user with the API Enabled permission.
To export, the user also needs read access to the records. Data Loader exports only what that user can see, so run inventory exports as a user whose profile or permission sets can read every object and field in scope, or you will get silently partial files.
- Install Java 17 or later and confirm with java -version. Salesforce's guide also has you set JAVA_HOME to the JRE directory.
- Download the current Data Loader release from Salesforce's developer tools page, extract the ZIP and run install.bat on Windows or installer.command on macOS.
- Launch Data Loader and choose Production or Sandbox before logging in; the default endpoints are login.salesforce.com and test.salesforce.com.
- Log in to your org. You stay logged in until you log out or close the program.
- Open Settings, Settings and set the export options described below before your first run, not halfway through the inventory.
Which Data Loader settings should you fix before exporting?#
Fix encoding, time zone, batch size and API mode once, record them in the manifest, and do not change them between runs. Data Loader stores settings in a properties file whose location appears under Settings, Help, so you can copy that file into the inventory folder as evidence.
The defaults below come from the current Data Loader guide and the open-source Data Loader code that Salesforce publishes on GitHub. Defaults can change between releases, which is exactly why the manifest records the version and the settings file.
| Setting (UI label) | Config property | Default | Inventory recommendation |
|---|---|---|---|
| Write all CSVs with UTF-8 encoding | dataAccess.writeUTF8 | Off (system charset) | Turn on so names, emails and notes with accents or non-Latin text survive; a UTF-8 BOM is written by default |
| Export batch size (Query request size) | sfdc.extractionRequestSize | 500 (min 200, max 2,000) | Raise toward 2,000 (the maximum) if exports are slow, and record the value used |
| Use Bulk API / Use Bulk API 2.0 | sfdc.useBulkApi / sfdc.useBulkV2Api | Off (SOAP API) | Turn on for large objects and record which API the run used |
| Time Zone | sfdc.timezone | Your computer's system time zone | Set explicitly and record it; confirm exported datetimes against one known record |
What is the step-by-step Salesforce Data Loader export procedure?#
Run one object at a time: Export or Export All, choose the object, name a new CSV, build or paste the SOQL, review it, and finish. Data Loader then shows a summary with success and error files. The steps below follow the Salesforce Data Loader export guide, with inventory controls added.
- 1. Click Export for live records, or Export All to also include soft-deleted records still in the Recycle Bin and archived activity records. The same commands are in the File menu.
- 2. Choose the object. If it is not listed, select Show all objects; history objects such as OpportunityFieldHistory and CaseHistory and file objects such as ContentVersion appear there.
- 3. Choose the output CSV. Always use a new file name for each run so earlier output is never overwritten or confused. A pattern like opportunity_exportall_2019-01-01_2019-12-31_v1.csv documents itself.
- 4. Select fields. Include Id and every relationship ID (AccountId, OwnerId, ContactId, WhatId, WhoId, ParentId, RecordTypeId) plus CreatedDate, LastModifiedDate and SystemModstamp. For compound address fields, select the component fields (BillingStreet, BillingCity and so on).
- 5. Add conditions or edit the generated SOQL directly. With no conditions, Data Loader returns every record you can read. For large objects, slice by date, for example WHERE CreatedDate >= 2019-01-01T00:00:00Z AND CreatedDate < 2020-01-01T00:00:00Z.
- 6. Copy the final SOQL into the manifest before clicking Finish, then confirm the run.
- 7. When the summary appears, record the success count and keep any error file. Rename nothing after this point; compute the checksum on the exact file you will ship.
Which objects make a complete CRM history export?#
A complete history needs the core records, the activity records attached to them, the field history tables, and file metadata, each exported with its relationship IDs. Exporting only Accounts and Opportunities gives you a snapshot, not a history.
Field history is the usual gap. Salesforce keeps tracked field history for 18 months in the UI and up to 24 months through the API; use Export All, select Show all Salesforce objects and choose the history object. Field history Salesforce has deleted is not included, and orgs with Field Audit Trail keep archived history in the FieldHistoryArchive big object, which needs its own export. For retention limits, see Salesforce field history retention.
Support objects (Case, CaseComment, EmailMessage, feeds) are covered in exporting Salesforce case history with feeds, emails and comments. Files need two steps: Data Loader exports ContentVersion, ContentDocument and ContentDocumentLink rows, but Salesforce's export guide says it does not support exporting attachments, so plan the file bodies through the Data Export Service or a separate API job and join them back by ContentDocumentId.
| Object | Why it matters | Export mode | Must-keep fields |
|---|---|---|---|
| Account, Contact, Lead | The parties and their identities | Export All | Id, OwnerId, RecordTypeId, ParentId (Account), AccountId (Contact), ConvertedAccountId (Lead), CreatedDate |
| Opportunity, OpportunityLineItem | Deals, amounts, products and outcomes | Export All | Id, AccountId, StageName, Amount, CloseDate, IsWon, IsClosed, OpportunityId, Product2Id |
| OpportunityFieldHistory, OpportunityHistory | How each deal moved over time | Export All | OpportunityId, Field, OldValue, NewValue, CreatedDate, CreatedById; StageName and Amount snapshots in OpportunityHistory |
| Task, Event | Calls, meetings and to-dos | Export All (pulls archived activities) | WhoId, WhatId, ActivityDate, Status, Subject, OwnerId, CreatedDate |
| ContentVersion, ContentDocumentLink | File metadata and what each file is attached to | Export | ContentDocumentId, Title, FileExtension, ContentSize, LinkedEntityId, IsLatest |
| AccountHistory, ContactHistory, custom __History | Field changes on other tracked objects | Export All | ParentId or object Id, Field, OldValue, NewValue, CreatedDate |
What should an export manifest record?#
One row per run, written at the time of the run, with enough detail that someone else could rerun the same SOQL and get the same count. Keep the manifest as a CSV next to the data files, and keep the Data Loader settings file and success logs in the same folder.
The template below uses illustrative values only. Generate checksums with sha256sum on Linux, shasum -a 256 on macOS or certutil -hashfile <file> SHA256 on Windows.
| Field | What to write | Example (illustrative) | Why it matters |
|---|---|---|---|
| Object and mode | API object name plus Export or Export All | Opportunity, Export All | Shows whether deleted and archived rows were in scope |
| SOQL used | The exact final query, copied before Finish | SELECT Id, AccountId, StageName, Amount, CloseDate, IsDeleted FROM Opportunity WHERE CreatedDate >= 2019-01-01T00:00:00Z AND CreatedDate < 2020-01-01T00:00:00Z | Makes the run reproducible |
| Record count and date range | Success count from the summary, plus the slice boundaries | 48,210 rows; 2019-01-01 to 2019-12-31 (UTC) | Basis for completeness checks |
| File name and checksum | Exact file name and SHA-256 hash | opportunity_exportall_2019_v1.csv; sha256 9f2c...e1 | Proves the delivered file is the one you exported |
| Run timestamp and time zone setting | Start time in UTC and the Data Loader Time Zone value | 2026-10-13T14:05Z; Time Zone UTC | Explains datetime values and lets you match API logs |
| Tool version and API mode | Data Loader version, SOAP or Bulk API, batch size | Data Loader 67.0.0; Bulk API 2.0 | Different modes and versions can behave differently |
| Operator | Who ran it and which Salesforce user | J. Admin as integration user inventory@ | Accountability and visibility check |
| Notes | Anything skipped, errors, reruns | Rerun v2 after adding RecordTypeId | Keeps corrections visible instead of silent |
How do you check that a Data Loader export is complete?#
Compare each file's row count with an independent count from Salesforce, confirm every relationship ID resolves to a row in another file, and confirm history and file objects were exported for the same period. Do this per object before anyone downstream touches the data.
- Counts match: run SELECT COUNT() FROM <object> WHERE <same filter> or a report with the same filter, and compare with the success count. Reports only count what the report type and the running user can see, so compare like with like.
- Slices add up: the sum of yearly or monthly slices equals the full-object count, with no overlapping or missing boundary days.
- Relationship IDs kept: AccountId, ContactId, OwnerId, WhatId, WhoId, ParentId and ContentDocumentId are present in every file that has them, and a sample join finds the parent row.
- Field history included: every object with tracked fields has its history file for the same date range, and the earliest history date is noted (expect about 18 to 24 months unless you have Field Audit Trail).
- Deleted and archived rows handled: Export All files keep the IsDeleted column, and the manifest says whether deleted rows will be kept or filtered.
- Encoding and dates verified: open a file with accented names to confirm UTF-8, and check one record's CreatedDate against the Salesforce UI to confirm time zone handling.
- Visibility confirmed: the exporting user can read every field you expected; a column that is entirely blank is often a field-level security gap.
- Checksums recorded: every file in the manifest has a hash, and the hash is recomputed after any copy or transfer.
How can you make the export repeatable?#
Save the exact SOQL per object, keep the settings file, and, if you are on Windows, script the runs in batch mode so the next export uses identical parameters. Batch mode reads a process-conf.xml where each process sets the operation (extract or extract_all), the object, the SOQL in sfdc.extractionSOQL and the output file.
For incremental refreshes, filter on SystemModstamp or LastModifiedDate greater than the previous run's timestamp and use Export All so deletions since the last run are captured. Record each incremental run as its own manifest row instead of overwriting the baseline.
What changes when the export is for licensing or a dataset inventory?#
Being able to export data is an access question; whether you may share or license it also depends on privacy permissions, ownership and contract rights, and de-identification alone does not create a right to license. A well-documented export makes those reviews faster because reviewers can see which objects, fields and periods exist. SourceX runs sourcing, rights review, contracting, data preparation, delivery and payment for businesses licensing operational data to AI developers, starting with a short assessment and no data uploads; the company approves what is released. See the four-permission framework before sharing any export.
Frequently asked questions
What is the difference between Export and Export All in Data Loader?
Export returns the records the user can read that are not deleted. Export All also returns soft-deleted records still in the Recycle Bin and archived activity records, such as older tasks and events. For a history inventory, use Export All and keep the IsDeleted column so you can decide later what to filter.
What do I need to run Data Loader?
A supported Java runtime (Salesforce's installation guide asks for Java 17 or later), the Data Loader download, and a Salesforce user with the API Enabled permission and read access to the records you export. Salesforce also publishes the Data Loader source code on GitHub.
How many records can Data Loader export?
Salesforce's current guide says Data Loader supports CSV files of up to 150,000,000 records. For bigger objects, turn on the Bulk API and split the export into date ranges with SOQL, which also makes each file easier to count and verify.
Can Data Loader export attachments and files?
Data Loader exports file metadata from ContentVersion, ContentDocument and ContentDocumentLink, but Salesforce's export guide says Data Loader does not support exporting attachments. Plan the file bodies through the Data Export Service or a separate API job, then join them back using ContentDocumentId.
Does Data Loader run on Mac or Linux?
Salesforce officially supports Data Loader on Windows and macOS. The open-source project documents a Linux installation, but Linux is not officially supported, and batch mode is officially supported only on Windows.
How far back can I export Salesforce field history with Data Loader?
Tracked field history is retained for up to 24 months through the API, versus 18 months in the UI. For history objects, use Export All and Show all Salesforce objects; field history that Salesforce has deleted is not included. Field Audit Trail customers can export archived history from FieldHistoryArchive.
Sources
- Data Loader's Export command exports live records, Export All also includes archived activity records and soft-deleted records, exporting needs Read on the records, Show all objects lists every accessible object, with no conditions all readable data is returned, and Data Loader does not support exporting attachments. Source
- The Data Loader Guide (version 68.0, Winter '27) says settings are saved in a properties file whose path is shown under Settings, Help, and documents the Write all CSVs with UTF-8 encoding option (dataAccess.writeUTF8). Source
- Installing Data Loader requires Java Runtime Environment 17 or later, setting JAVA_HOME, and a user with the API Enabled permission. Source
- Data Loader supports CSV files of up to 150,000,000 records; Salesforce suggests the web-based wizards for smaller jobs such as fewer than 50,000 records. Source
- Salesforce's open-source Data Loader repository states official support for Windows and macOS only, documents a Linux route and Windows-only official batch mode, and its code sets export batch size defaults (500, min 200, max 2,000), the system time zone default, SOAP as the default API, writeUTF8 off, a UTF-8 BOM on export, the login.salesforce.com and test.salesforce.com endpoints, and the extract and extract_all operations and sfdc.extractionSOQL property. Source
- Salesforce's knowledge article explains exporting field history with Data Loader (up to 24 months): click Export All, select Show all Salesforce objects and choose the history object; field history deleted by Salesforce is not included. Source
- FieldHistoryArchive is a standard big object that holds archived field history for Field Audit Trail. Source
- The Data Export Service generates backup files weekly (Enterprise, Performance and Unlimited) or monthly (all editions except Database.com), with manual runs limited to once every 7 or 29 days. Source
- Dataloader from MuleSoft (dataloader.io) is a browser-based product distinct from the downloadable Salesforce Data Loader. Source
Related resources
See if your company qualifies
A short company assessment. No data uploads are needed.