agent failed to parse the bulk job results: nested error rows
Parses Salesforce Bulk API result files with nested error rows: read the result CSV properly, extract per-row errors, and route failures. Use when result parsing fails. Not for job failures.
TL;DR
Bulk API result files are CSVs where error rows contain nested, quoted error details that naive parsers mangle. Parse with a real CSV reader, read the error column per row, and route failed rows to a retry file with their reasons. The results are fine; the parser is naive.
Error
csv.Error: unexpected end of data in error column; nested quotes broke the parseSteps
- Parse the result file with a proper CSV reader that handles quoted fields. Expected: rows parse cleanly.
- For each row, check the success flag; for failures, extract the error message column. Expected: per-row outcomes with reasons.
- Group failures by error message. Expected: a handful of classes.
- Write failed rows plus their errors to a retry file. Expected: actionable rework, not a mystery.
- Fix each class and re-run only the failed rows. Expected: clean completion.
When to use
- Result parsing crashes or mangles errors.
- An agent cannot tell which rows failed or why.
- After a bulk job with partial failures.
When not to use
- Jobs that fail outright (check job state).
- Row errors themselves (fix the data per the error).
Tool compatibility
- Salesforce Bulk API result files; Python csv module.
- Agent result handling.
Variant phrasings
result file parse error
Use a real CSV parser.
nested error rows
The error column contains structured detail; parse it as CSV first.
Why it happens
Error details contain commas, quotes, and newlines. Line-splitting or naive splitting breaks on exactly the rows you most need to read.
Edge cases
- Error text can itself contain the delimiter; quoted-field parsing handles it.
- Very large result files need streaming parse, not load-all.
- Keep the raw result file; it is the audit trail.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_f42utVdlhpWdXLFgRExqUw