Airtable Source Plugin
Latest: v1.1.2
The CloudQuery Airtable plugin pulls data from Airtable (opens in a new tab) and loads it into any supported CloudQuery destination (e.g. PostgreSQL, BigQuery, Snowflake, and more).
The plugin discover all bases and tables in your account and syncs them to the destination.
Example Configuration
This example syncs from Airtable to a Postgres destination. The (top level) source spec section is described in the Source Spec Reference.
kind: source
# Common source-plugin configuration
spec:
name: airtable
registry: docker
path: ghcr.io/cloudquery/cq-source-airtable:v1.1.2
tables: ["*"]
destinations: ["postgresql"]
# airtable-specific configuration
spec:
access_token: "${AIRTABLE_ACCESS_TOKEN}" # required
# endpoint_url: "https://api.airtable.com" # Optional, defaults to `https://api.airtable.com`
# concurrency: 10000 # Optional, defaults to `10000`
This example uses environment variable expansion to read the token from an AIRTABLE_ACCESS_TOKEN
environment variable. You can also hardcode the value in the configuration file, but this is not advised for production settings.
Authentication
In order to fetch information from Airtable, cloudquery
needs to authenticate using a personal access token for Airtable's API (opens in a new tab). Follow the instructions on the Airtable website and create a read-only token with data.records:read
and schema.bases:read
scopes.
Tables naming convention
In Airtable base names are not unique, and table names are unique within a base.
The plugin uses the following naming convention for tables: <lowercase_base_id>__<snake_case_base_name>__<snake_case_table_name>
.
This ensures table names are unique across all bases (note the separator between name parts is __
).
To sync only specific base(s) or table(s) you can use wildcard matching for the tables
option, for example:
kind: source
spec:
name: airtable
registry: docker
path: ghcr.io/cloudquery/cq-source-airtable:v1.1.2
tables:
# Sync all tables under bases matching the name `base_name_to_sync`
- "*__<base_name_to_sync>__*"
# Sync all tables matching the name `table_name_to_sync`
- "*__*__<table_name_to_sync>"
# Sync all tables matching the name `table_name_to_sync` under bases matching the name `base_name_to_sync`
- "*__<base_name_to_sync>__<table_name_to_sync>"
...
Configuration Reference
This is the (nested) spec used by the Airtable source plugin:
-
access_token
(string, required):Your Airtable API personal access token (opens in a new tab).
-
endpoint_url
(string, optional. Default:https://api.airtable.com
):The endpoint URL to fetch data from.
-
concurrency
(integer, optional. Default: 10000):Best effort maximum number of tables to sync concurrently.