Bendsql
Databend Native Client
Install / Use
/learn @databendlabs/BendsqlREADME
BendSQL
Databend Native Client in Rust
Components
-
core: Databend RestAPI Rust Client
-
driver: Databend SQL Client for both RestAPI and FlightSQL in Rust
-
cli: Databend Native CLI
Bindings
-
python: Databend Python Client
-
nodejs: Databend Node.js Client
-
java: Databend Java Client (upcoming)
Installation for BendSQL
Installation script
curl -fsSL https://repo.databend.com/install/bendsql.sh | bash
or
curl -fsSL https://repo.databend.com/install/bendsql.sh | bash -s -- -y --prefix /usr/local
Cargo:
cargo-binstall is recommended:
cargo binstall bendsql
Or alternatively build from source:
cargo install bendsql
Homebrew:
brew install databendcloud/homebrew-tap/bendsql
Apt:
- Using DEB822-STYLE format on Ubuntu-22.04/Debian-12 and later:
sudo curl -L -o /etc/apt/sources.list.d/databend.sources https://repo.databend.com/deb/databend.sources
- Using old format on Ubuntu-20.04/Debian-11 and earlier:
sudo curl -L -o /usr/share/keyrings/databend-keyring.gpg https://repo.databend.com/deb/databend.gpg
sudo curl -L -o /etc/apt/sources.list.d/databend.list https://repo.databend.com/deb/databend.list
Then install bendsql:
sudo apt update
sudo apt install bendsql
Manually:
Check for latest version on GitHub Release
Usage
❯ bendsql --help
Databend Native Command Line Tool
Usage: bendsql [OPTIONS]
Options:
--help Print help information
--flight Using flight sql protocol, ignored when --dsn is set
--tls <TLS> Enable TLS, ignored when --dsn is set [possible values: true, false]
-h, --host <HOST> Databend Server host, Default: 127.0.0.1, ignored when --dsn is set
-P, --port <PORT> Databend Server port, Default: 8000, ignored when --dsn is set
-u, --user <USER> Default: root, overrides username in DSN
-p, --password <PASSWORD> Password, overrides password in DSN [env: BENDSQL_PASSWORD]
-r, --role <ROLE> Downgrade role name, overrides role in DSN
-D, --database <DATABASE> Database name, overrides database in DSN
--set <SET> Settings, overrides settings in DSN
--dsn <DSN> Data source name [env: BENDSQL_DSN]
-n, --non-interactive Force non-interactive mode
-A, --no-auto-complete Disable loading tables and fields for auto-completion, which offers a quicker start
--check Check for server status and exit
--query=<QUERY> Query to execute
-d, --data <DATA> Data to load, @file or @- for stdin. The `--query` should use the syntax: `INSERT FROM <table> from @_databend_load file_format=(<file_format_options>)`
-o, --output <OUTPUT> Output format [possible values: table, csv, tsv, null]
--quote-style <QUOTE_STYLE> Output quote style, applies to `csv` and `tsv` output formats [possible values: always, necessary, non-numeric, never]
--progress Show progress for query execution in stderr, only works with output format `table` and `null`.
--stats Show stats after query execution in stderr, only works with non-interactive mode.
--time[=<TIME>] Only show execution time without results, will implicitly set output format to `null`. [possible values: local, server]
-l, --log-level <LOG_LEVEL> [default: info]
-V, --version Print version
Custom configuration
By default bendsql will read configuration from ~/.bendsql/config.toml and ~/.config/bendsql/config.toml
sequentially if exists.
- Example file
❯ cat ~/.bendsql/config.toml
[connection]
host = "127.0.0.1"
tls = false
[connection.args]
connect_timeout = "30"
[settings]
display_pretty_sql = true
progress_color = "green"
no_auto_complete = true
prompt = ":) "
- Connection section
| Parameter | Description |
| ---------- | --------------------------- |
| host | Server host to connect. |
| port | Server port to connect. |
| user | User name. |
| database | Which database to connect. |
| args | Additional connection args. |
- Settings section
| Parameter | Description |
| -------------------- | ------------------------------------------------------------------------------------------------------------------- |
| display_pretty_sql | Whether to display SQL queries in a formatted way. |
| prompt | The prompt to display before asking for input. |
| progress_color | The color to use for the progress bar. |
| show_progress | Whether to show a progress bar when executing queries. |
| show_stats | Whether to show statistics after executing queries. |
| no_auto_complete | Whether to disable loading tables and fields for auto-completion on startup. |
| max_display_rows | The maximum number of rows to display in table output format. |
| max_width | Limit display render box max width, 0 means default to the size of the terminal. 65535 means no limit for max_width |
| max_col_width | Limit display render each column max width, smaller than 3 means disable the limit. |
| output_format | The output format to use. |
| expand | Expand table format display, default auto, could be on/off/auto. |
| time | Whether to show the time elapsed when executing queries. |
| multi_line | Whether to allow multi-line input. |
| quote_string | Whether to quote string values in table output format, default false. |
| sql_delimiter | SQL delimiter, default ;. |
Commands in REPL
| Commands | Description |
| -------------- | ----------------------- |
| !exit | Exit bendsql |
| !quit | Exit bendsql |
| !configs | Show current settings |
| !set | Set settings |
| !source file | Source file and execute |
Setting commands in REPL
We can use !set CMD_NAME VAL to update the Settings above in runtime, example:
❯ bendsql
:) !set display_pretty_sql false
:) !set max_display_rows 10
:) !set expand auto
DSN
Format:
databend[+flight]://user:[password]@host[:port]/[database][?sslmode=disable][&arg1=value1]
Examples:
-
databend://root:@localhost:8000/?sslmode=disable&presign=detect -
databend://user1:password1@tnxxxx.gw.aws-us-east-2.default.databend.com:443/benchmark?warehouse=default&enable_dphyp=1 -
databend+flight://root:@localhost:8900/database1?connect_timeout=10
Available Args
Common
| Arg | Description |
| ----------------- | ------------------------------------ |
| tenant | Tenant ID, Databend Cloud only. |
| warehouse | Warehouse name, Databend Cloud only. |
| sslmode | Set to disable if not using tls. |
| tls_ca_file | Custom root CA certificate path. |
| connect_timeout | Connect timeout in seconds |
RestAPI Client
| Arg | Description | Default |
|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|
| query_result_format | (Since v0.33.1) Format to fetch result set, available arguments are json/arrow. | JSON |
| sslmode | SSL mode, available values are enable/disable. | disable |
| wait_time_secs | Request wait time for page. | 1 |
| max_rows_per_page | Max result rows for a single page. | 10000 |
| page_request_timeout_secs | Timeout for a single page request. | 30 |
| presign | Whether to enable presign for data loading, available
Related Skills
feishu-drive
349.9k|
things-mac
349.9kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
349.9kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
postkit
PostgreSQL-native identity, configuration, metering, and job queues. SQL functions that work with any language or driver
