DataWasi
← All docs

Importing records

Updated

Add or update many records at once from a CSV, an Excel or SQLite file, or create one record per file from a ZIP of photos and PDFs. Upload the file, check where each part of it goes, and import — it runs in the background. Or email the files to the account.

Start an import

  1. On a table, press New beside its name and use Import many records, beside the form — or open Import — beside the title of the account's page — to upload from the account's Import page.
  2. Press Choose a file…, pick a CSV, an Excel (.xlsx) or SQLite file, or a ZIP of images/PDFs — its name shows beside the button — and press Upload.
  3. Check where each sheet goes, then press Import.

Where each sheet goes

Every sheet of an Excel file and every table of a SQLite file — a CSV counts as one sheet — goes to the table whose fields its column headers name, as long as its values fit them: dates where the field holds dates, numbers where it holds numbers. A file uploaded from a table's New record page goes to that table unless its columns name another.

A CSV can separate its columns with commas or with semicolons, the way Excel saves it in Spanish or Portuguese. Its amounts are read the way they're written: when a column has 2,850.75 the dot marks the decimals, and when it has 2.850,75 the comma does and 15.000 is fifteen thousand. A semicolon CSV reads the comma as the decimal mark even when no value shows it.

Change where a sheet goes from its list, or choose Don't import. If you manage the account, a sheet that names no table becomes a new table: its headers become the fields, and their kinds are guessed from the rows. A ZIP goes to the table you started from — pick one if you started elsewhere.

Under each sheet, the page says what importing it will do — how many of its columns go into fields — or what's stopping it. Import runs the sheets one after another — one whose reference columns name records from another sheet goes after it — and the page follows each one until it's done.

An upload you leave before pressing Import isn't lost: it waits on the account's Import page, under Waiting to import, until you import it or delete it — a table's New record page says how many are waiting and links there.

Mapping columns

Each column goes into the field its header names, whatever the accents or capitals; a column no field names is left out. Press Edit columns on a sheet to change any of them. A file whose first row is already data — no header row — is read that way, and its columns go into the table's fields in order; if that guess is wrong, change “First row is column headers” there.

A date cell in Excel arrives as that date, whatever format the sheet shows it in.

A column going into a reference field — one that links to a record in another table — names each record the way that table shows it: an employee's name, an invoice's FAC-042. Capitals, spacing and accents don't matter, and a record's ID works too. A name no record has, or one two records share, leaves that row out, saying why.

Creating vs updating

A sheet creates new records unless its columns page says otherwise: it can update existing records instead, or both. To update, map a column to “Match existing by ID” — that's the record's ID, the same one a data export includes — so a row with a matching ID updates that record instead of creating a new one.

A file that carries no DataWasi IDs can still update: under “Match existing records by”, pick a field whose value identifies a record — an invoice number, an email — and map its column. A row whose value matches an existing record updates it; with the update-or-create mode, the rest are created.

Importing photos and PDFs

A ZIP of images or PDFs creates one record per file: each file is read by AI to fill in the fields, and the file itself is kept — attached to the table's file field, which is created for you if the table doesn't have one yet. The files are read together in one background batch, so a large ZIP can take a while — you'll get an email when it's done. The upload's page shows the count before you import.

A document's whole data comes along. An invoice's lines fill the table's line-items field, row by row, and a reference gets the record the document names — the customer already in the referenced table, found by its name whatever the case or accents, or a new one added there with the details the document shows. Two records called the same leave the reference blank rather than guess.

Each import takes up to 200 files, and the whole batch is sized against your namespace's remaining AI budget and prepaid credits before anything runs — a ZIP too big for what's left this month is refused up front. If the budget runs out while the batch is running, the remaining files are canceled and listed as failed with that reason; everything already extracted is kept.

A file the table already has is left out rather than read again: when the same photo or PDF — byte for byte — is already attached to one of its records, the import skips it and names that record. So does a second copy within one ZIP or email. A file someone attached by hand on a record's page isn't checked.

Sending by email

Every account has an email address — its name at datawasi.app, like taller@datawasi.app — and each of its tables one more, with the lowercase form of the table's name after a +: taller+gastos@datawasi.app for Gastos. An ñ in a table's name is written ni there, since an email address takes only plain letters: taller+disenios@datawasi.app for Diseños. The account's Import page and each table's New record page show them, with a Copy button. DataWasi was called Bascuade before, and an address at bascuade.app still works.

Email files there and they're imported as if you'd uploaded them: each spreadsheet or ZIP goes where its columns say, and the message's photos and PDFs become one record each in the table you sent them to — read by AI together with what you wrote, so a line like “paid with the Visa” can fill a field the file doesn't show. Anything that needs a choice — a sheet that names no table, files sent to the address of an account with several tables — waits under Waiting to import for you to finish. Nothing sent by email creates a table.

A message with nothing attached is a record of its own: its subject and text are read into the table you sent it to, or the account's only table. Forward a receipt that came in the body of an email, or just write “Lunch with a client, $450”.

Only people who can add records to the account can email it, and only from an email confirmed on their profile — DataWasi checks that the message really comes from that address, so no one can send in your name. When it's done you get one reply saying what became of each part, with links. Mail from anyone else is ignored, and never answered.

An upload that came by email says so on its page — who sent it, the subject and, for them and whoever manages the account, what they wrote — so you know what you're choosing a table for, and what the photos and PDFs will be read with.

To forward mail automatically from Gmail — a supplier's invoices, say — create a filter that forwards them to the account's (or a table's) address. Gmail first sends that address a confirmation code; DataWasi passes it on to you by email with Gmail's link, so you can confirm the forward. From then on, the forwarded messages count as yours, and the replies come to you. Automatic forwarding from other providers isn't supported yet: forward those by hand, and they work like any message you send.

Results

You'll get an email as each sheet finishes. The upload's page shows how each one went; open one to see how many records were created, updated, skipped, or failed — with a per-row reason for anything that didn't import, so you can fix the source and try again.