batch delete
delete multiple records in one command with automatic concurrency control.multiple URIs as arguments
from file via stdin
uris.txt contains:
control concurrency
batch create
create multiple records from JSONL (JSON Lines) format.single record (backward compatible)
batch create from JSONL
posts.jsonl contains one JSON object per line:
control concurrency
batch update
update multiple records from JSONL format with uri field.single update (backward compatible)
batch update from JSONL
updates.jsonl contains one JSON object per line with a uri field:
uri field can be a shorthand URI (just the record key) or a full AT-URI. the uri field is extracted from each JSON object, and the remaining fields are used as the update data.
control concurrency
JSONL format
JSONL (JSON Lines) is one JSON object per line:- one complete JSON object per line
- no commas between objects
- empty lines are ignored
- no array wrapper
[...]
performance
batch operations use concurrent execution with rate limiting:- default concurrency: 10 simultaneous operations
- respects rate limits: semaphore-based throttling
- progress tracking: shows progress bar in interactive terminals
- error handling: continues on error by default, reports failures at end
real-world performance
sequential deletion (old way):common workflows
backup and restore
bulk delete by pattern
migrate records
bulk update posts
limitations
- authentication required: batch operations need valid credentials
- rate limits apply: respect PDS rate limits with
--concurrency - memory usage: large batches held in memory during processing