R2¶
Cloudflare R2 is a scalable, durable, affordable and managed object storage drop-in replacement for existing S3 workflows.
omniload supports R2 as a data source.
URI Format¶
The URI for connecting to R2 is structured as follows.
r2://bucket/path/to/data.parquet?endpoint_url=https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com&access_key_id=YOUR_ACCESS_KEY&secret_access_key=YOUR_SECRET_ACCESS_KEY
URI components¶
- access_key_id:
Your access key ID.
- secret_access_key:
Your secret access key.
Set up an R2 integration¶
Before you use Cloudflare R2, make sure you have registered an account. Then, generate an API token to serve as the Access Key for usage with existing S3-compatible SDKs or XML APIs.
Examples¶
To integrate omniload with R2, you need your account id, access key,
and secret.
Load Parquet data from R2 into DuckDB¶
The following command demonstrates how to copy data from a specified OSS location into a DuckDB database.
omniload ingest \
--source-uri 'r2://?endpoint_url=https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com&access_key_id=YOUR_ACCESS_KEY&secret_access_key=YOUR_SECRET_ACCESS_KEY' \
--source-table 'path/to/data.parquet' \
--dest-uri 'duckdb:///demo.duckdb' \
--dest-table 'public.example'
Running the command creates a table named example within the public schema
(or equivalent grouping) in the DuckDB database file located at demo.duckdb.
Tip
Here, instead of defining the remote resource exclusively per source URI
using its <path> component, the bucket name and the file glob pattern
are specified using the separate --source-table option. Both addressing
variants are supported equally.
Backlog¶
Todo
The
endpoint_urldoesn’t need to be conveyed fully. It is enough to let the user supply theaccount_idparameter in the connection URL.The temporary credentials API is not covered yet.