将 Airtable 数据导出到磁盘文件
使用 pip
安装此工具
$ pip install airtable-export
您需要以下信息
- 您的 Airtable Base ID - 这是一个以
app...
开头的字符串 - 您的 Airtable 个人访问令牌 (Personal Access Token) - 这是一个以
pat...
开头的字符串
如果您只想导出部分表格,您还需要知道这些表格的名称。
您可以通过运行以下命令将所有数据导出到名为 export/
的文件夹
airtable-export export base_id --key=key
此示例将为您的每个表格创建文件,例如:export/table1.yml
和 export/table2.yml
。
除了使用 --key
选项传递 API 密钥外,您还可以将其设置为名为 AIRTABLE_KEY
的环境变量。
要仅导出指定的表格,请将其名称作为额外参数传递
airtable-export export base_id table1 table2 --key=key
默认情况下,此工具将您的数据导出为 YAML 格式。
您也可以使用 --json
或 --ndjson
选项导出为 JSON 或 换行符分隔的 JSON 格式。
airtable-export export base_id --key=key --ndjson
您可以一次传递多个格式选项。此命令将为每个导出的表格创建一个 .json
、.yml
和 .ndjson
文件。
airtable-export export base_id \
--key=key --ndjson --yaml --json
如果您导入所有表格,或者添加 --schema
选项,Base 的 JSON schema 将被写入 output-dir/_schema.json
文件。
您可以使用 --sqlite database.db
选项将表格导出到 SQLite 数据库文件。
airtable-export export base_id \
--key=key --sqlite database.db
这可以与其他格式选项结合使用。如果您只指定 --sqlite
,则导出目录参数将被忽略。
导出的每个表格都将在 SQLite 数据库中创建一个对应的表格。这些表格将有一个名为 airtable_id
的主键列。
如果您对现有的 SQLite 数据库运行此命令,具有匹配主键的记录将被来自导出的新记录覆盖。
默认情况下,此工具使用 python-httpx 的默认配置。
您可以使用 --user-agent
选项覆盖 user-agent
。
airtable-export export base_id table1 table2 --key=key --user-agent "Airtable Export Robot"
您可以使用 --http-read-timeout
选项覆盖网络读取操作期间的超时。如果未设置,则默认为 5 秒。
airtable-export export base_id table1 table2 --key=key --http-read-timeout 60
GitHub Actions 是 GitHub 的工作流程自动化产品。您可以使用它运行 airtable-export
,以便将您的 Airtable 数据备份到 GitHub 仓库。这样做可以为您提供对 Airtable 数据所做更改的可见提交历史记录 - 例如此示例。
要为您的 Airtable 数据库运行此工具,您首先需要在您的 GitHub 仓库中添加以下秘密
- AIRTABLE_BASE_ID
- Base ID,一个以 `app...` 开头的字符串
- AIRTABLE_KEY
- 您的 Airtable API 密钥
- AIRTABLE_TABLES
- 一个以空格分隔的 Airtable 表格列表,您想要备份这些表格。如果其中任何名称包含空格,您需要用单引号将其括起来,例如 'My table with spaces in the name' OtherTableWithNoSpaces
设置完这些秘密后,将以下内容添加为一个名为 .github/workflows/backup-airtable.yml
的文件
name: Backup Airtable
on:
workflow_dispatch:
schedule:
- cron: '32 0 * * *'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- uses: actions/cache@v2
name: Configure pip caching
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-
restore-keys: |
${{ runner.os }}-pip-
- name: Install airtable-export
run: |
pip install airtable-export
- name: Backup Airtable to backups/
env:
AIRTABLE_BASE_ID: ${{ secrets.AIRTABLE_BASE_ID }}
AIRTABLE_KEY: ${{ secrets.AIRTABLE_KEY }}
AIRTABLE_TABLES: ${{ secrets.AIRTABLE_TABLES }}
run: |-
airtable-export backups $AIRTABLE_BASE_ID $AIRTABLE_TABLES -v
- name: Commit and push if it changed
run: |-
git config user.name "Automated"
git config user.email "actions@users.noreply.github.com"
git add -A
timestamp=$(date -u)
git commit -m "Latest data: ${timestamp}" || exit 0
git push
这将每天运行一次(UTC 时间午夜后 32 分钟),如果您手动点击“Run workflow”按钮,它也会运行,参见GitHub Actions:使用 workflow_dispatch 手动触发。
要为此工具做贡献,请首先检出代码。然后创建一个新的虚拟环境
cd airtable-export
python -mvenv venv
source venv/bin/activate
或者如果您正在使用 pipenv
pipenv shell
现在安装依赖项和测试
pip install -e '.[test]'
运行测试
pytest