Export and import NocoDB bases between instances.
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | shNOCODB_EMAIL="your@email.com" \
NOCODB_PASSWORD="yourpassword" \
BASE_ID="p2b1mor87640vjw" \
uv run --with requests nocodb_full_export.pyNOCODB_EMAIL="your@email.com" \
NOCODB_PASSWORD="yourpassword" \
IMPORT_FILE="nocodb_export_BaseName_TIMESTAMP.json" \
uv run --with requests nocodb_full_import.pyOption 1: Email/Password (Recommended)
NOCODB_EMAIL="your@email.com" NOCODB_PASSWORD="yourpassword"Option 2: Auth Token
NOCODB_TOKEN="eyJhbGc..."| Variable | Required | Default | Description |
|---|---|---|---|
NOCODB_EMAIL + NOCODB_PASSWORD |
Yes* | - | Email/password auth |
NOCODB_TOKEN |
Yes* | - | Token auth (alternative) |
BASE_ID |
Yes | - | Base ID (from URL) |
NOCODB_URL |
No | http://localhost:8500 |
NocoDB instance URL |
INCLUDE_DATA |
No | true |
Include table data |
OUTPUT_FILE |
No | auto | Custom output filename |
*Either EMAIL+PASSWORD or TOKEN required
| Variable | Required | Default | Description |
|---|---|---|---|
NOCODB_EMAIL + NOCODB_PASSWORD |
Yes* | - | Email/password auth |
NOCODB_TOKEN |
Yes* | - | Token auth (alternative) |
IMPORT_FILE |
Yes | - | Path to export file |
NOCODB_URL |
No | http://localhost:8500 |
NocoDB instance URL |
NEW_BASE_TITLE |
No | {original} (Import) |
New base title |
WORKSPACE_ID |
No | - | Target workspace ID |
*Either EMAIL+PASSWORD or TOKEN required
✅ Base metadata, tables, schemas, columns, data, views
Duplicate a base:
NOCODB_EMAIL="user@email.com" NOCODB_PASSWORD="pass" BASE_ID="p123" uv run --with requests nocodb_full_export.py
NOCODB_EMAIL="user@email.com" NOCODB_PASSWORD="pass" IMPORT_FILE="nocodb_export_*.json" uv run --with requests nocodb_full_import.pyTransfer between instances:
NOCODB_URL="http://source:8500" NOCODB_EMAIL="user@email.com" NOCODB_PASSWORD="pass" BASE_ID="p123" uv run --with requests nocodb_full_export.py
NOCODB_URL="http://target:8500" NOCODB_EMAIL="user2@email.com" NOCODB_PASSWORD="pass2" IMPORT_FILE="nocodb_export_*.json" uv run --with requests nocodb_full_import.pySchema only (no data):
INCLUDE_DATA="false" NOCODB_EMAIL="user@email.com" NOCODB_PASSWORD="pass" BASE_ID="p123" uv run --with requests nocodb_full_export.pyOpen your base in NocoDB and look at the URL:
http://your-instance/nc/p2b1mor87640vjw
^^^^^^^^^^^^^^^^
This is your BASE_ID
Use .env file:
cat > .env << EOF
NOCODB_EMAIL=your@email.com
NOCODB_PASSWORD=yourpassword
BASE_ID=p123abc
EOF
export $(cat .env | xargs) && uv run --with requests nocodb_full_export.pyBatch export:
for BASE_ID in p123 p456 p789; do
NOCODB_EMAIL="user@email.com" NOCODB_PASSWORD="pass" BASE_ID="$BASE_ID" uv run --with requests nocodb_full_export.py
done- 401 Unauthorized: Use email/password auth or get fresh token
- Base not found: Check BASE_ID format (starts with 'p')
- Missing relationships after import: Recreate Link columns manually in UI
- Slow exports: Use
INCLUDE_DATA="false"for schema only