BendSQL
BendSQL is a command line tool that has been designed specifically for Databend. It allows users to establish a connection with Databend and execute queries directly from a CLI window.
This tool is particularly useful for those who prefer a command line interface and need to work with Databend on a regular basis. With BendSQL, users can easily and efficiently manage their databases, tables, and data, and perform a wide range of queries and operations with ease.
Downloading and Installing BendSQL
To download and install BendSQL, kindly visit the BendSQL release page on GitHub.
Connecting to Databend
Use bendsql
to connect to a Databend instance:
> bendsql --help
Databend Native Command Line Tool
Usage: bendsql [OPTIONS]
Options:
--help Print help information
--flight Using flight sql protocol
--tls Enable TLS
-h, --host <HOST> Databend Server host, Default: 127.0.0.1
-P, --port <PORT> Databend Server port, Default: 8000
-u, --user <USER> Default: root
-p, --password <PASSWORD> [env: BENDSQL_PASSWORD=]
-D, --database <DATABASE> Database name
--set <SET> Settings
--dsn <DSN> Data source name [env: BENDSQL_DSN=]
-n, --non-interactive Force non-interactive mode
-q, --query <QUERY> Query to execute
-d, --data <DATA> Data to load, @file or @- for stdin
-f, --format <FORMAT> Data format to load [default: csv] [possible values: csv, tsv, ndjson, parquet, xml]
--format-opt <FORMAT_OPT> Data format options
-o, --output <OUTPUT> Output format [default: table] [possible values: table, csv, tsv]
--progress Show progress for data loading in stderr
-V, --version Print version
To connect to a local Databend, simply run bendsql
:
> bendsql
Welcome to BendSQL.
Trying connect to localhost:8000 as user root.
Connected to DatabendQuery v1.1.2-nightly-8ade21e4669e0a2cc100615247705feacdf76c5b(rust-1.70.0-nightly-2023-04-15T16:08:52.195357424Z)
To connect to Databend Cloud, it is recommended to use the --dsn
option or the BENDSQL_DSN
environment variable:
> export BENDSQL_DSN="databend://cloudapp:password@tnxxx.gw.aws-us-east-2.default.databend.com/?warehouse=default
> bendsql
Welcome to BendSQL.
Trying connect to tnxxx.gw.aws-us-east-2.default.datafusecloud.com:443 as user cloudapp.
Connected to DatabendQuery v1.1.17-nightly-77286d52c6d6db2c2000a74febf4ddb25f910c41(rust-1.70.0-nightly-2023-04-24T04:38:16.901421116Z)
cloudapp@tnxxx.gw>
Running Queries with BendSQL
Query with interactive shell
> bendsql
Welcome to BendSQL.
Trying connect to localhost:8000 as user root.
Connected to DatabendQuery v1.1.2-nightly-8ade21e4669e0a2cc100615247705feacdf76c5b(rust-1.70.0-nightly-2023-04-15T16:08:52.195357424Z)
root@localhost> select now();
SELECT
NOW()
┌────────────────────────────┐
│ now() │
│ Timestamp │
├────────────────────────────┤
│ 2023-04-25 07:09:41.281690 │
└────────────────────────────┘
1 row in 0.018 sec. Processed 1 rows, 1B (54.96 rows/s, 54B/s)
(1 row)
Query non-interactive
with argument:
> bendsql --query "select now()"
┌────────────────────────────┐
│ now() │
│ Timestamp │
├────────────────────────────┤
│ 2023-04-25 07:12:31.552631 │
└────────────────────────────┘
with stdin:
> echo "select now();" | bendsql
┌────────────────────────────┐
│ now() │
│ Timestamp │
├────────────────────────────┤
│ 2023-04-25 07:12:55.602754 │
└────────────────────────────┘
Loading data
from stdin:
> bendsql --query='INSERT INTO test_books VALUES;' --format=csv --data=@- <books.csv
from file:
> bendsql \
--query='INSERT INTO ontime VALUES;' \
--format=csv \
--format-opt="compression=gzip" \
--format-opt="skip_header=1" \
--set="presigned_url_disabled=1" \
--data=@ontime.csv.gz
presigned_url_disabled=1
would instruct BendSQL to load data directly using upload_to_stage
api, which would result in additional transfer fee as well as lower performance, and is not recommended for production use.