对 SQLite、PostgreSQL 和 ClickHouse 进行插入、更新插入、查询和同步
# Single profile → database
anysite api /api/linkedin/user user=satyanadella -q --format jsonl | \
anysite db insert mydb --table profiles --stdin --auto-create
# Batch results → database
anysite api /api/linkedin/user --from-file users.txt --input-key user \
--parallel 5 -q --format jsonl | \
anysite db insert mydb --table profiles --stdin --auto-create
anysite db insert mydb --table profiles --file results.jsonl --auto-create
加上 --auto-create 后,CLI 会根据 JSON 数据推断出模式,并在表不存在时创建它 — 列类型是根据数据值
推断出来的。--pk <column> 用于在创建表时设置主键。
--auto-create 可以安全地重复使用 — 它只在第一次运行时创建表,之后的运行会插入到已存在的表中。
如果只想创建表而不插入数据,可以直接使用 db create-table(--stdin 读取一份 JSON 样本来推断模式,
--dry-run 只打印 CREATE TABLE SQL 而不执行):
echo '{"id":1,"name":"test"}' | anysite db create-table mydb --table users --pk id --dry-run
db insert 和 db upsert 共用同一套底层逻辑。db upsert 是 db insert --on-conflict update
的简写:
# db upsert: conflict columns are required, always updates on conflict
cat updates.jsonl | \
anysite db upsert mydb --table profiles --conflict-columns id --stdin
# Equivalent via db insert, with explicit --on-conflict
cat updates.jsonl | \
anysite db insert mydb --table profiles --stdin --auto-create \
--on-conflict update --conflict-columns id
db insert 的 --on-conflict 接受 error(默认)、ignore、replace 或 update。--batch-size
(默认 100)控制每批插入发送的行数。
# List tables
anysite db schema mydb
# Show columns of one table
anysite db schema mydb --table profiles
# Query with table output (default format for db query)
anysite db query mydb --sql "SELECT name, headline FROM profiles LIMIT 10" --format table
# Export query results to CSV
anysite db query mydb --sql "SELECT * FROM profiles WHERE industry = 'Technology'" \
--format csv --output tech_profiles.csv
# Count records
anysite db query mydb --sql "SELECT COUNT(*) FROM profiles"
# Query from a .sql file instead of --sql
anysite db query mydb --file queries/report.sql --format json
--format 接受 json、jsonl、csv、table(默认)或 parquet(需配合 --output)。
将数据集管道采集到的数据直接加载到数据库:
# Load all sources into database (creates tables per source)
anysite dataset load-db dataset.yaml -c mydb
# Drop existing tables and reload
anysite dataset load-db dataset.yaml -c mydb --drop-existing
# Load a specific snapshot date
anysite dataset load-db dataset.yaml -c mydb --snapshot 2026-01-15
# Auto-load during collection
anysite dataset collect dataset.yaml --load-db mydb
管道中的每个数据源都会成为一张单独的表,以数据源 ID 命名。单个数据源的 db_load.key 和
db_load.sync(full — 默认,删除已不存在的行;或 append — 不执行删除)用于控制增量行为,
以及父数据源与依赖数据源之间的外键关联 — 见
Per-Source Transform & Export。
dataset diff 用于比较管道针对同一数据源采集的两份带日期的 Parquet 快照 — 它会报告两次采集运行
之间发生的变化,不会与数据库进行比较,也不会写入数据库:
anysite dataset diff dataset.yaml --source profiles --key urn.value
# Compare specific dates instead of the two most recent snapshots
anysite dataset diff dataset.yaml --source profiles --key urn.value --from 2026-01-01 --to 2026-01-08
# Diff only specific fields
anysite dataset diff dataset.yaml --source profiles --key urn.value --fields "name,headline"
结果包括:
要将变化真正同步到实时数据库,请使用上面的 dataset load-db。
# Step 1: Collect data
anysite dataset collect dataset.yaml
# Step 2: Load into PostgreSQL
anysite dataset load-db dataset.yaml -c pg
# Step 3: Query the results
anysite db query pg --sql "
SELECT p.name, p.headline, e.company_name
FROM profiles p
JOIN employees e ON p.urn_value = e.urn_value
LIMIT 20
" --format table
# Or do it all in one command:
anysite dataset collect dataset.yaml --load-db pg
| 命令 | 描述 |
|---|---|
anysite db insert <conn> --table <name> --stdin |
从标准输入插入数据 |
anysite db insert <conn> --table <name> --file <path> |
从文件插入数据 |
anysite db insert <conn> ... --auto-create --pk <col> |
根据数据自动创建表 |
anysite db insert <conn> ... --on-conflict update --conflict-columns <cols> |
冲突时更新插入 |
anysite db upsert <conn> --table <name> --conflict-columns <cols> |
更新插入,上一行的简写形式 |
anysite db create-table <conn> --table <name> --stdin |
根据推断的模式创建表,不插入数据 |
anysite db schema <conn> / --table <name> |
列出所有表,或查看某张表的列 |
anysite db query <conn> --sql "..." |
运行 SQL 查询 |
anysite dataset load-db <yaml> -c <conn> |
将数据集加载到数据库 |
anysite dataset load-db <yaml> -c <conn> --drop-existing |
重新加载并使用全新的表 |
anysite dataset load-db <yaml> -c <conn> --snapshot <date> |
加载指定的快照 |
anysite dataset diff <yaml> --source <id> --key <field> |
比较某个数据源的两次采集快照 |
使用 AI 驱动的分类和摘要来增强您的数据
使用 DuckDB SQL 查询采集到的数据集