Skip to main content

Airtable Multicorn FDW for Postgres

Project description

Airtable Foreign Data Wrapper

Installation

Requirements

PostgreSQL 9.1+ with Multicorn extension installed.

Loading extension and defining FDW server

Ensure multicorn is loaded and define Foreign Data Wrapper for airtable

create extension if not exists multicorn;
create server if not exists multicorn_airtable_srv foreign data wrapper multicorn options (
    wrapper 'airtable_fdw.AirtableFDW'
);

Usage

Define table as

create foreign table schema.table_name (
    "_id" varchar options (rowid 'true'),                       -- column used as rowid, may be any name, 
                                                                -- should appear only onece
    "Some text column" varchar,
    "Some numeric column" numeric,
    "Some date column" date,
    "Some complex column" json,                                 -- can be used for complex fields but see example below 
    "Some json nullable column" json options (nulljson 'true'), -- keep nulls as json ('null'::json instead of null::json)
    "Some computed column" varchar options (computed 'true')    -- column that won't be modified with update
                                                                -- may appear multiple times
) server multicorn_airtable_srv options (
    api_key '...',      -- api access key
    base_key '...',     -- database identifier
    table_name '...',   -- name of table to read from
    view_name '...',    -- optional view name, if not present raw table will be read
    rowid_column '...'  -- optional rowid column name will be used if no column has `rowid` option set 
);

If complex column - like Collaborator - appears in table it is read from AirTable API as a json and could be treated as json or as a complex, custom defined type.

create type AirtableCollaborator as
(
    id     varchar,
    email  varchar,
    "name" varchar
);
create foreign table schema.table_name (
    "_id" varchar options (rowid 'true'),
    "editor" AirtableCollaborator options (complextype_fields 'id,email,name', complextype_send 'email')
) server multicorn_airtable_srv options (
    api_key '...',
    base_key '...',
    table_name '...'
);

where:

  • complextype_fields 'id,email,name' indicates how record string should be constructed from json - so {"id": "someid", "email": "me@example.com", "name":"My Name"} will be converted to (someid,me@example.com,My Name) and will be correctly casted to AirtableCollaborator type.
  • complextype_send 'email' means that when this field is modified only email field will be sent to API

Usage Tips

  • Use AND in WHERE clause whenever possible, ORs are not handled well (at all?) by multicorn so unconditional queries are sent to Airtable (watch the quota!).
  • If OR is required try to replace it with IN (...)

Features

  • Configurable to read from given base / table / view
  • SQL WHERE clause transformed to formula query (so number of requests to API is optimized)
  • Batch INSERT/UPDATE/DELETE
  • support for complex types - json is parsed to complex type on read (SELECT), and single, selected field is set on write (INSERT, UPDATE)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

airtable_fdw-0.3.4.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

airtable_fdw-0.3.4-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file airtable_fdw-0.3.4.tar.gz.

File metadata

  • Download URL: airtable_fdw-0.3.4.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.7.12 Linux/5.11.0-1028-azure

File hashes

Hashes for airtable_fdw-0.3.4.tar.gz
Algorithm Hash digest
SHA256 83b3fe271936b89b4435d58086c8caf8010d31db361cbc2f2543adc496066b59
MD5 72ab87bf58852e66b9a1046e05254d14
BLAKE2b-256 46ff08852477c3f7fc07b33f94da99baf28a8c7b6fd603c74740ef0f2ff2c660

See more details on using hashes here.

File details

Details for the file airtable_fdw-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: airtable_fdw-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.7.12 Linux/5.11.0-1028-azure

File hashes

Hashes for airtable_fdw-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 112df48009a8f1c9d22cacdf333df72aa1cff6cc9865fa9fa9298c92c41ff332
MD5 fc597a4dd891c42bb29e9ad86cd5d77a
BLAKE2b-256 b7dc774efb3590f0bf35995389c895c58825802f013d1aff38b051d6d82bea00

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page