https://github.com/scalefreecom/tap-airtable
https://github.com/scalefreecom/tap-airtable
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/scalefreecom/tap-airtable
- Owner: ScalefreeCOM
- License: agpl-3.0
- Created: 2022-03-11T10:09:28.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-10-11T08:54:20.000Z (almost 4 years ago)
- Last Synced: 2025-03-27T00:17:29.255Z (over 1 year ago)
- Language: Python
- Size: 71.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Tap Airtable customized by [Scalefree International GmbH](https://www.scalefree.com)
[
](https://www.scalefree.com)
[Singer](https://www.singer.io/) tap that extracts data from a [AirTable](https://airtable.com/api) database and produces JSON-formatted data following the [Singer spec](https://github.com/singer-io/getting-started/blob/master/docs/SPEC.md).
To make this Tap work with a Target, clone both projects and follow this instructions:
## Usage
This section dives into basic usage of `tap-mysql` by walking through extracting
data from a table. It assumes that you can connect to and read from a MySQL
database.
### Install
```bash
python3 -m venv ~/.virtualenvs/tap-airtable
source ~/.virtualenvs/tap-airtable/bin/activate
pip install -e .
```
### Create the configuration file
| Configuration Key | required | Description |
|---------------------|----------|----------------------------------------------------------------------------------------------------------|
| metadata_url | - | Airtable metadata URL, at the time of the update: "https://api.airtable.com/v2/meta/" |
| records_url | - | Airtable content URL, at the time of the update: "https://api.airtable.com/v0/" |
| token | yes | Airtable Token |
| base_id | - | Airtable base ID to export |
| selected_by_default | - | Default for every table in the base. If set to true, all of the tables in the schema will be syncronized |
| remove_emojis | - | Filter out emojis from the scyncronization |
#### Configuration file example
```json
{
"metadata_url":"https://api.airtable.com/v2/meta/",
"records_url":"https://api.airtable.com/v0/",
"token":"airtable_token",
"base_id": "airtable_base_id",
"selected_by_default": true,
"remove_emojis": false
}
```
### Discovery mode
The tap can be invoked in discovery mode to find the available tables and
columns in the database:
```bash
$ tap-airtable --config config.json --discover
```
A discovered catalog is output, with a JSON-schema description of each table. A
source table directly corresponds to a Singer stream.
The `selected-by-default` fields is used to enable the sync of the tables. If set to 'true', all of the tables will be
selected in the `properties.json`
## Target project (Example: target-postgres)
### Clone target-postgres project
```shell
git clone https://github.com/datamill-co/target-postgres
cd target-postgres
```
### To install dependencies on target project run the commands
```shell
python3 -m venv ~/.virtualenvs/target-postgres
source ~/.virtualenvs/target-postgres/bin/activate
pip install target-postgres
```
### To run full tap and target action run for a particular Base
Complete the config.json
```
{
"metadata_url":"https://api.airtable.com/v2/meta/",
"records_url":"https://api.airtable.com/v0/",
"token":"airtable-api-key",
"base_id": "base-id",
"selected_by_default": true
}
```
From the home directory of the project
```shell
tap-airtable -c config.json --properties properties.json | ~/.virtualenvs/target-postgres/bin/target-postgres
```