Skip to main content
FomiVIP
Service Cases

Onsite QR Check-In and a 2,000-Row CSV Import

The client sent 2,000+ rows of attendee data to import into the onsite check-in system. The 6-column CSV had empty cells from merged Excel sheets and phone numbers with spaces. Doors opened at 8; we ran the import at the venue at 7:10 — preview first, then write. Peak hour: 600+ scans, no queues.

August 5, 2022Event RegistrationData ImportOnsite Delivery

Doors opened at 8; we were there at 7:10, laptop on a folding table at the check-in desk, next to QR-code stands still wrapped in film. One job to do: import the 2,000-row list the client had sent the night before into the check-in system.

That CSV

Six columns: name, organization, mobile number, ticket type, session, notes. Opening it, we met some old acquaintances:

  • Three rows had empty names — almost certainly saved from an Excel with merged cells: a value in the top-left cell, the rows below left blank.
  • A dozen-plus phone numbers had leading or trailing spaces, and two were written as '138 0000 0000' with spaces inside.
  • The ticket-type column carried three spellings: 'VIP', 'Vip', 'vip'.

The import script never writes straight to the database. The first pass produces a preview: total rows, columns detected, how many rows fall into each problem category, and the first five problematic rows shown as-is. This step was instituted after our 2017 Excel-import incident and has stayed with us since.

Processing rules were agreed with the client on the spot: the three empty-name rows don't get guessed at — they go to a separate 'to complete' page handled manually at the check-in desk; phone numbers get stripped of spaces and non-digit characters; ticket types are normalized to lowercase. The only hard block was 'phone number is not 11 digits'; everything else auto-fixes, with one log line per fix so we could audit later.

Confirmed at 7:42 and written to the database — 2,000-plus rows in a bit over a second.

8:20 to 9:20

The first hour after opening was the crunch. The check-in page does exactly one thing: scan the code, the ticket number comes up, one tap to confirm — nothing to fill in. The QR codes had been batch-generated by ticket type in advance, printed on the stands and sent by email.

The peak hour saw 600-plus scans; the busiest minute in the Nginx log had 23 submissions — nowhere near worrying. The real hiccup was at the desk: one laptop's browser was too old and its buttons stopped responding, so we swapped in a spare.

The three attendees with missing names arrived one by one. The woman at the desk checked the 'to complete' page, asked, and typed the name in by hand. The queue never jammed.

Noon

The client wanted an attendance list grouped by organization, one sheet per company in Excel. The export script was written the day before — one click. They ran it against the invitation list to see who hadn't come.

By the time we packed up, the film on the QR-code stand had finally been peeled off — nobody had gotten to it all morning. On the ride back I skimmed the logs: 1,700-plus check-ins for the day, four failures, all the same person scanning repeatedly.

The venue air conditioning was on full blast. The jacket I brought in the morning never came off — then it got hot at noon.

Consulting · Free initial chat

Need advice for your scenario?

Tell us your business context and current systems, and we'll give an actionable approach.

Contact us

Mon–Fri 9:00–18:00 · We respond on business days within one business day.

WeChat (Business Only)
WeChat (Business Only)二维码

Scan and add our WeChat for consulting

Or fill out the requirements form