← 返回
未分类

Hologres Cli

AI-agent-friendly Hologres CLI with safety guardrails and structured JSON output. Use for database operations, schema inspection, SQL execution, data import/...
wenbingyu
未分类 clawhub v0.2.0 100000 Key: 无需
★ 0
Stars
📥 195
下载
💾 0
安装

概述

Hologres CLI

AI-agent-friendly command-line interface for Hologres with safety guardrails and structured JSON output.

Installation

# Requires Python 3.11+
pip install hologres-cli

# Or install a specific version
pip install hologres-cli==0.2.0

Configuration

Profile-based configuration stored in ~/.hologres/config.json.

# Interactive setup wizard
hologres config

# Or set values directly
hologres config set region_id cn-hangzhou
hologres config set instance_id hgprecn-cn-xxx
hologres config set database mydb

Profile resolution priority: --profile flag > current profile > error (prompts to run hologres config).

Quick Start

pip install hologres-cli
hologres config                                   # Interactive setup
hologres status                                    # Check connection
hologres schema tables                             # List tables
hologres sql run "SELECT * FROM orders LIMIT 10"   # Query data
hologres --profile prod status                     # Use specific profile
hologres dt list                                   # List Dynamic Tables

Core Commands

CommandDescription
----------------------
hologres statusCheck connection status
hologres instance Query instance version/connections
hologres warehouse [name]List or query warehouses
hologres schema tablesList all tables
hologres schema describe
Show table structure
hologres schema dump Export DDL
hologres schema size Get table storage size
hologres table list [--schema S]List all tables
hologres table create -n TABLE -c COLS [options] [--dry-run]Create a table (supports logical partition V3.1+)
hologres table dump Export DDL for a table
hologres table show
Show table structure (columns, types, nullable, defaults, primary key, comments)
hologres table size Get table storage size
hologres table properties
Show Hologres-specific table properties (orientation, distribution_key, clustering_key, TTL, etc.)
hologres table drop [--if-exists] [--cascade] --confirm
Drop a table (dry-run by default)
hologres table truncate --confirm
Truncate (empty) a table (dry-run by default)
hologres table alter TABLE [options] [--dry-run]Alter table properties (add column, rename, TTL, etc.)
hologres partition list --table
List partitions of a logical partition table
hologres partition create --table
Create partition (no-op for logical tables, returns notice)
hologres partition drop --table --partition VALUE --confirm
Drop partition (deletes partition data)
hologres partition alter --table --partition --set [--dry-run]
Alter partition properties (keep_alive, storage_mode, generate_binlog)
hologres partition alter --table --partition --set [--dry-run]
Alter partition properties (keep_alive, storage_mode, generate_binlog)
hologres view list [--schema S]List all views
hologres view show Show view definition and structure
hologres extension listList installed extensions
hologres extension create [--if-not-exists]Create (install) a database extension
hologres guc show Show current value of a GUC parameter
hologres guc set Set GUC parameter at database level (persistent)
hologres sql run ""Execute read-only SQL
hologres sql run --write ""Execute write SQL
hologres sql explain ""Show SQL execution plan
hologres data export -f out.csv [-q ] [-d ]
Export to CSV
hologres data import -f in.csv [-d ] [--truncate]
Import from CSV
hologres data count [-w ]
Count rows
hologres history [-n ]Show command history
hologres ai-guideGenerate AI agent guide
hologres ai gen "" [--model]Generate text using AI function
hologres ai image-gen "" -o volume://vol/path [options]Generate images to OSS volume using AI function
hologres ai t2v "" -o volume://vol/path [options]Generate video from text (text-to-video)
`hologres ai i2v "" --img-url local_file> -o volume://vol/path [options]`Generate video from first-frame image (image-to-video)
`hologres ai r2v "" --reference-url local_file> -o volume://vol/path [options]`Generate video from reference images (reference-to-video)
`hologres ai video-edit "" --video local_file> -o volume://vol/path [options]`Edit video with text instructions
hologres volume create --endpoint --root --rolearn --access-key --access-secret Create a local volume config (also creates OSS directory placeholder)
hologres volume listList all volumes in current profile
hologres volume delete Delete a volume config
`hologres volume list-files --volume [--prefix P] [--max-count N] [--net internet\intranet]`List files in volume
`hologres volume delete-file --volume --file [--confirm] [--net internet\intranet]`Delete file from volume (dry-run by default)
`hologres volume download-file --volume --file -d [--net internet\intranet]`Download file from volume
`hologres volume upload-file --volume --local-file --target-file [--net internet\intranet]`Upload file to volume
`hologres volume view volume:///path/file [--net internet\intranet]`Download file to temp dir and open with system viewer
hologres model list [--task T] [--model-type T] [--search S]List registered external AI models
hologres model catalog [--task T] [--search S]List supported AI model types from the bundled catalog (no DB connection)
hologres model create --name N --type T --api-key K [--config J] [--dry-run]Register an external AI model via add_external_model()
hologres model delete [--confirm]Delete a registered external AI model (dry-run by default)

Dynamic Table Commands (V3.1+)

Full lifecycle management for Hologres Dynamic Tables.

CommandDescription
----------------------
hologres dt createCreate a Dynamic Table
hologres dt listList all Dynamic Tables
hologres dt show
Show Dynamic Table properties
hologres dt ddl
Show DDL (CREATE statement)
hologres dt lineage
Show dependency lineage
hologres dt lineage --allShow lineage for all DTs
hologres dt storage
Show storage details
hologres dt state-size
Show state table size (incremental)
hologres dt refresh
Trigger manual refresh
hologres dt alter
Alter DT properties
hologres dt drop
Drop DT (dry-run by default)
hologres dt convert [table]Convert V3.0 → V3.1 syntax

dt create

# Minimal
hologres dt create -t my_dt --freshness "10 minutes" \
  -q "SELECT col1, SUM(col2) FROM src GROUP BY col1"

# With partitioning and serverless
hologres dt create -t ads_report --freshness "5 minutes" --refresh-mode auto \
  --logical-partition-key ds --partition-active-time "2 days" \
  --partition-time-format YYYY-MM-DD \
  --computing-resource serverless --serverless-cores 32 \
  -q "SELECT repo_name, COUNT(*) AS events, ds FROM src GROUP BY repo_name, ds"

# Incremental refresh
hologres dt create -t tpch_q1 --freshness "3 minutes" --refresh-mode incremental \
  -q "SELECT l_returnflag, l_linestatus, COUNT(*) FROM lineitem GROUP BY 1,2"

# Dry-run (preview SQL without executing)
hologres dt create -t my_dt --freshness "10 minutes" -q "SELECT 1" --dry-run

Key create options:

OptionDescription
---------------------
-t, --tableTable name [schema.]table (required)
-q, --querySQL query for data definition (required)
--freshnessData freshness target, e.g. "10 minutes" (required)
--refresh-modeauto / full / incremental
--auto-refresh/--no-auto-refreshEnable/disable auto refresh
--cdc-formatstream (default) / binlog
--computing-resourcelocal / serverless /
--serverless-coresServerless computing cores
--logical-partition-keyPartition column for logical partition
--partition-active-timeActive partition window, e.g. "2 days"
--partition-time-formatPartition key format, e.g. YYYY-MM-DD
--orientationcolumn / row / row,column
--distribution-keyDistribution key columns
--clustering-keyClustering key with sort order
--event-time-columnEvent time column (Segment Key)
--ttlData TTL in seconds
--refresh-gucGUC params for refresh (repeatable)
--dry-runPreview SQL without executing

dt list / show / ddl

hologres dt list                     # List all DTs with refresh info
hologres dt show public.my_dt        # Show all properties
hologres dt ddl public.my_dt         # Show CREATE statement
hologres dt list -f table            # Table format output

dt lineage

hologres dt lineage public.my_dt     # Single table lineage
hologres dt lineage --all            # All DTs lineage
hologres dt lineage my_dt -f table   # Table format

base_table_type: r=table, v=view, m=materialized view, f=foreign table, d=Dynamic Table.

dt storage / state-size

hologres dt storage public.my_dt      # Storage breakdown
hologres dt state-size public.my_dt   # State table size (incremental DTs)

dt refresh

hologres dt refresh my_dt
hologres dt refresh my_dt --overwrite --partition "ds = '2025-04-01'" --mode full
hologres dt refresh my_dt --dry-run

dt alter

hologres dt alter my_dt --freshness "30 minutes"
hologres dt alter my_dt --no-auto-refresh
hologres dt alter my_dt --refresh-mode full --computing-resource serverless
hologres dt alter my_dt --refresh-guc timezone=GMT-8:00 --dry-run

dt drop

hologres dt drop my_dt               # Dry-run by default (safety)
hologres dt drop my_dt --confirm     # Actually drop
hologres dt drop my_dt --if-exists --confirm

dt convert (V3.0 → V3.1)

hologres dt convert my_old_dt          # Convert single table
hologres dt convert --all              # Convert all V3.0 tables
hologres dt convert my_old_dt --dry-run

Output Formats

Partition Management

# List partitions
hologres partition list -t public.logs

# Drop a partition
hologres partition drop -t my_table --partition "2025-04-01" --confirm

# Alter partition properties
hologres partition alter -t public.logs --partition "ds=2025-03-16" --set "keep_alive=TRUE"
hologres partition alter -t my_table --partition "ds=2025-03-16" --set "keep_alive=TRUE" --set "storage_mode=hot" --dry-run

Output Formats

hologres -f json schema tables    # JSON (default)
hologres -f table schema tables   # Human-readable table
hologres -f csv schema tables     # CSV
hologres -f jsonl schema tables   # JSON Lines

Response Structure

// Success
{"ok": true, "data": {"rows": [...], "count": 10}}

// Error
{"ok": false, "error": {"code": "ERROR_CODE", "message": "..."}}

Safety Features

0. Default Session GUC Protection

All connections automatically set safety GUCs upon creation:

  • SET hg_experimental_enable_adaptive_execution = on — Enables adaptive execution to prevent OOM
  • SET hg_computing_resource = 'serverless' — Routes queries to the serverless computing pool

These are applied transparently at the connection layer; no user action needed.

1. Row Limit Protection

Queries without LIMIT returning >100 rows fail with LIMIT_REQUIRED.

# Will fail if >100 rows
hologres sql run "SELECT * FROM large_table"

# Fix: add LIMIT
hologres sql run "SELECT * FROM large_table LIMIT 50"

# Or disable check
hologres sql run --no-limit-check "SELECT * FROM large_table"

2. Write Protection

Write operations (INSERT, UPDATE, DELETE, DROP, CREATE, ALTER, TRUNCATE, GRANT, REVOKE) require --write flag.

hologres sql run --write "INSERT INTO logs VALUES (1, 'test')"

3. Dangerous Write Blocking

DELETE/UPDATE without WHERE clause are blocked.

# Blocked
hologres sql run --write "DELETE FROM users"

# Must have WHERE
hologres sql run --write "DELETE FROM users WHERE status='inactive'"

Error Codes

CodeDescription
-------------------
CONNECTION_ERRORFailed to connect
QUERY_ERRORSQL execution error
LIMIT_REQUIREDNeed LIMIT clause
WRITE_GUARD_ERRORWrite operation without --write flag
DANGEROUS_WRITE_BLOCKEDDELETE/UPDATE without WHERE clause
WRITE_BLOCKEDWrite operation not allowed
NOT_FOUNDTable or resource not found
INVALID_INPUTInvalid identifier or input validation failed
INVALID_ARGSInvalid or missing arguments
NO_CHANGESNo properties specified to alter
EXPORT_ERRORData export failed
IMPORT_ERRORData import failed
VIEW_NOT_FOUNDView not found
OSS_ERROROSS operation failed (e.g. directory placeholder creation on volume create)

Sensitive Data Masking

Auto-masks by column name pattern:

  • phone/mobile/tel → 138**5678
  • email → j*@example.com
  • password/secret/token → **

Disable: hologres sql run --no-mask "SELECT * FROM users LIMIT 10"

References

DocumentContent
------------------
commands.mdComplete command reference with DT commands
ai-volume-model.mdAI generation, volume storage, and model commands
safety-features.mdSafety guardrails details

Best Practices

  1. Always use LIMIT for large result sets
  2. Use --dry-run to preview DT SQL before executing
  3. Use --confirm explicitly for destructive operations (table drop, table truncate, dt drop)
  4. Include WHERE clause in DELETE/UPDATE
  5. Use JSON output for automation/scripting
  6. Check hologres status before batch operations
  7. Use hologres dt lineage to understand DT dependencies before altering

SQL Tracking

Set HOLOGRES_SKILL environment variable before calling CLI to tag queries with skill origin:

export HOLOGRES_SKILL=hologres-query-optimizer
hologres sql run "SELECT * FROM orders LIMIT 10"

Queries will appear in hg_query_log with application_name = "hologres-cli/hologres-query-optimizer".

This enables per-skill SQL statistics on the Hologres server:

SELECT
  split_part(application_name, '/', 2) AS skill,
  COUNT(*) AS query_count,
  AVG(duration) AS avg_duration_ms
FROM hologres.hg_query_log
WHERE query_start > now() - interval '1 hour'
  AND application_name LIKE 'hologres-cli/%'
GROUP BY 1
ORDER BY 2 DESC;

版本历史

共 1 个版本

  • v0.2.0 当前
    2026-05-21 15:48 安全 安全

安全检测

暂无安全检测报告