Import into BigQuery — CSV, Excel & PDF
Это содержимое пока не доступно на вашем языке.
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.
1. Embed the importer
Section titled “1. Embed the importer”<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.
3. Deliver from your webhook
Section titled “3. Deliver from your webhook”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 streamingBigQuery-specific gotchas
Section titled “BigQuery-specific gotchas”- 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.
Why not hand-rolled import?
Section titled “Why not hand-rolled import?”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.