REDB CLI

Управление базой данных из терминала. Инициализация схемы, экспорт и импорт данных.

dotnet tool install --global redb.CLI

Команды

$ redb init

Создать все таблицы, последовательности, функции и представления REDB в существующей пустой базе данных.

bash
# PostgreSQL
redb init -p postgres -c "Host=localhost;Database=mydb;Username=postgres;Password=pass"

# SQL Server
redb init -p mssql -c "Server=localhost;Database=mydb;User Id=sa;Password=pass;TrustServerCertificate=True"
ОпцияAliasОбяз.Описание
--provider-pДаПровайдер БД: postgres, mssql
--connection-cДаСтрока подключения ADO.NET
--verbose-vНетПодробный вывод

$ redb schema

Вывести полный SQL-скрипт инициализации в файл или stdout. Полезно для ревью DBA или CI/CD-пайплайнов.

bash
# Write to file
redb schema -p postgres -o redb_schema.sql

# Output to stdout
redb schema -p postgres

# Pipe to psql
redb schema -p postgres | psql -d mydb
ОпцияAliasОбяз.Описание
--provider-pДаПровайдер БД: postgres, mssql
--output-oНетВыходной файл. Без указания — вывод в stdout

$ redb export

Экспортировать всю базу данных (или отдельные схемы) в файл .redb — формат JSONL, опционально сжатый.

bash
# Full export with compression
redb export -p postgres -c "Host=localhost;Database=redb;..." \
  -o backup.redb --compress --batch-size 100000 -v

# Export specific schemes only
redb export -p postgres -c "..." -o partial.redb --schemes 100,200

# Dry run
redb export -p postgres -c "..." -o test.redb --dry-run
ОпцияAliasОбяз.Описание
--provider-pДаПровайдер БД
--connection-cДаСтрока подключения
--output-oДаПуть к выходному файлу (.redb)
--compressНетСжать вывод ZIP
--schemesНетID схем для экспорта (через запятую)
--batch-sizeНетРазмер батча (по умолчанию: 1000)
--dry-runНетПредварительный просмотр без выполнения
--verbose-vНетПодробный вывод

$ redb import

Импортировать данные из файла .redb в базу данных.

bash
# Import with clean (truncates tables first)
redb import -p postgres -c "Host=localhost;Database=redb;..." \
  -i backup.redb --clean -v --batch-size 100000

# Dry run
redb import -p mssql -c "..." -i backup.redb --dry-run
ОпцияAliasОбяз.Описание
--provider-pДаПровайдер БД
--connection-cДаСтрока подключения
--input-iДаПуть к входному файлу (.redb)
--cleanНетОчистить все таблицы REDB перед импортом
--batch-sizeНетРазмер батча для bulk insert (по умолчанию: 1000)
--dry-runНетПредварительный просмотр без выполнения
--verbose-vНетПодробный вывод

Поддерживаемые провайдеры

ПровайдерAliasesПример строки подключения
PostgreSQL postgres, postgresql, pgsql Host=localhost;Port=5432;Database=redb;Username=postgres;Password=pass
SQL Server mssql, sqlserver Server=localhost;Database=redb;User Id=sa;Password=pass;TrustServerCertificate=True

Типичные сценарии

Настройка нового проекта

bash
# 1. Create database
createdb myapp

# 2. Initialize REDB schema
redb init -p postgres -c "Host=localhost;Database=myapp;Username=postgres;Password=pass" -v

# 3. Run your application
dotnet run --project MyApp

Миграция между базами (Postgres → MSSQL)

bash
# 1. Export from PostgreSQL
redb export -p postgres -c "Host=src;Database=redb;..." -o data.redb --compress -v

# 2. Init schema in SQL Server
redb init -p mssql -c "Server=dst;Database=redb;..." -v

# 3. Import into SQL Server
redb import -p mssql -c "Server=dst;Database=redb;..." -i data.redb --clean -v

Backup и восстановление

bash
# Backup
redb export -p postgres -c "..." -o backup_2026-02-13.redb --compress

# Restore
redb import -p postgres -c "..." -i backup_2026-02-13.redb --clean -v

Доступно и из кода

Все операции CLI также доступны программно через IRedbService:

csharp
// A: Auto-create on startup (recommended)
await redb.InitializeAsync(ensureCreated: true);

// B: Explicit call
await redb.EnsureDatabaseAsync();
await redb.InitializeAsync();

// C: Export SQL for DBA review
var sql = redb.GetSchemaScript();
File.WriteAllText("redb_schema.sql", sql);