SI Store Ops

One task · £195 · untested offer price

Stop supplier CSV rows splitting at commas, quotes and line breaks

A named supplier CSV with commas, quotes and line breaks in descriptions imports at the right column count on every row. Bad rows are listed by line, and a file with an unclosed quote is rejected.

Request this outcome

Who this is for

Operations or purchasing manager at a distributor whose supplier CSV imports correctly for most products but scrambles a few.

A price or stock figure lands in the description, or the importer counts more or fewer products than the supplier states, after a description contains a comma, a quote mark or a line break, or after the supplier switches to semicolons.

The result

A synthetic file built from your redacted sample, with the agreed delimiter and quoting cases, imports with every row at the agreed column count and every field equal to the expected value. A row with the wrong number of fields is rejected and listed with its record and line number. A file with an unclosed quote is rejected as a whole, naming the line where the unreadable record starts, so nothing is stored shifted.

What is included

  • One existing importer path that reads one named supplier layout with a stated delimiter
  • Reproduce the fault on a synthetic file and record which rows shift and why
  • Read the file with a proper CSV reader using the agreed delimiter, quote character and doubled-quote escape, including line breaks inside quoted fields
  • Check the header and the field count of every row against the agreed layout, so a file in a different delimiter or layout is rejected instead of imported as one wide column
  • Read the whole file before storing any row, so a file with an unclosed quote is rejected as a whole, stores nothing and names the line where the unreadable record starts
  • Reject a row with the wrong number of fields, with its record number, line number, original text and reason, and prove that rows read equal rows accepted plus rows rejected
  • Add a regression test with the synthetic file

You receive

  • A change to the importer with its regression test
  • The synthetic file, the expected field values and the reject list produced from it
  • A one-page note on the delimiter, quoting and reject rules now in force
  • Steps to revert the change

What is not included

  • Adapting the importer to added, renamed or reordered columns, which are header changes: a file whose header differs from the agreed layout is rejected, not adapted
  • Repairing rows already stored in the wrong fields
  • Character encoding faults
  • Detecting the layout of arbitrary files from unknown suppliers
  • Changing how the supplier exports the file

What we need from you first

  • Five to ten invented or redacted rows as plain text, including a row that goes wrong
  • Which delimiter the supplier states, and the row count it states, if any
  • The importer's name and language. No real price lists, customer data, credentials or code in the first enquiry

Never send passwords, keys, customer records or confidential code in the first enquiry. Secure handover is agreed after scoping.

How we check it is done

  • A synthetic file whose description fields contain a comma, a doubled quote mark and a line break imports with every row at the agreed column count and every stored field equal to the expected value.
  • A file in the agreed non-comma delimiter imports to the same expected values, while a file in a different delimiter, whose header or field count does not match the agreed layout, is rejected with a clear message instead of importing as one wide column.
  • In a closed-quote test file, a row with too few fields and a row with too many fields are each rejected to a list giving its record number, line number, original text and reason, and rows read equal rows accepted plus rows rejected.
  • A test file with one unclosed quote followed by several well-formed rows is rejected as a whole: no row from it is stored, including the rows after the bad one, and the message names the line where the unreadable record starts.
  • The importer's existing tests still pass with the change applied.

You inspect the expected and stored values and the reject list, and sign off in writing. Payment follows sign-off; applying the change live stays with your maintainer.

When we would stop or decline

  • Fields that contain the delimiter are not quoted at all in the supplier's file, so no reader can tell values apart reliably: we show the lines and stop
  • The only reproduction needs production data or credentials
  • The file is fixed-width, spreadsheet or another format

Questions

My supplier switched to semicolons. Is that this job?

Yes, if the importer should read the agreed semicolon layout. If the supplier may switch again without notice, a feed change report or a standing check is a better fit.

Will rows that are malformed be fixed automatically?

No. They are rejected and listed with their line number so someone can ask the supplier or decide. Guessing a fix can store wrong product data.

Does it cover a new column added by the supplier?

No. A file whose header does not match the agreed layout is rejected by the layout check, not adapted. Handling a changed header is a separate problem; see the guide on header changes and the feed version report.

Price and terms

£195 · untested offer price. £195 after the agreed synthetic file imports with every field as expected and you sign off. No payment before sign-off.

This is a new service with no published client results. The price is a starting point we have not yet tested with buyers. Nothing is ordered or charged by the enquiry. The full specification is on the Synthetic Industry catalogue.

Request this outcome

Enquiry about: Stop supplier CSV rows splitting at commas, quotes and line breaks. Page: /services/csv-delimiter-quoting-embedded-newlines-import/.

A public HTTPS link only, without login details, query strings or fragments. No code or logs.

Sending emails your enquiry and contact address to our team through our mail provider (Resend). It is not kept in a website database. Do not send passwords, keys, recovery links, confidential code or customer records. Your contact email is unverified; nothing is ordered, charged or reserved. Privacy notice.

An enquiry is not an order. We assess fit and agree scope, safe access and terms before any work. Prefer email? hello@syntheticindustry.ai.