Zum Inhalt springen
Loslegen

Import into BigQuery — CSV, Excel & PDF

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

Goal: your users bring the file they have — CSV, Excel, even a PDF or a scan — and clean records land in BigQuery without leaving your product, and without you writing a mapping/validation UI. The pattern is the same every time: embed → validate → deliver. Mildport handles the first two; your webhook handler owns the write into BigQuery.

<mildport-import
api-base-url="https://imports.your-infra.example"
license-key="SIGNED_TENANT_KEY"
catalog-key="events"
></mildport-import>

2. Publish a catalog that mirrors BigQuery

Section titled “2. Publish a catalog that mirrors BigQuery”

The schema lives in a target catalog, not in host code. Create it in the catalog editor (/admin/catalogs on your engine, or embed <mildport-catalog-editor>), match the destination table, and publish. The widget loads that published catalog by catalog-key.

Align keys with column names (user_email, event_name, amount, occurred_at). Mark REQUIRED columns required; the review step then refuses rows BigQuery would reject.

Users then upload anything — renamed headers, six languages, XLSX/ODS, even PDF tables — and Mildport’s deterministic matcher plus the review step produce typed, validated rows.

Need the schema computed per user at runtime, or versioned with your app? That’s the schema-as-code path — pass targets from host code instead of catalog-key.

Clean rows arrive on your signed apply webhook; your handler writes to BigQuery:

Batch load job (GCS → LOAD) for bulk — atomic and free — or the Storage Write API for streaming
  • prefer load jobs over streaming inserts for imports: atomic, free, and no best-effort dedup window to reason about.
  • REQUIRED schema fields fail the whole load — mirror them as required catalog fields so review guarantees loadability.
  • partition by ingestion time or a date column up front; retrofitting partitioning means rewriting the table.

bq load assumes an engineer and a clean file. When analysts or customers bring spreadsheets, an embedded importer types and validates every row first — so a load job never burns an hour on row 40,213’s date format.


Try the flow first: the playground (no signup), then the Quickstart and target catalogs. Prices are published — hosted and flat-annual self-host — at mildport.com/#pricing.