Overview
SQL Client is a bash
script that provides a convenient way to export SQL query results to a file or standard output in CSV or JSON format.
The client validates input parameters and executes a request to /api/sql
API endpoint using credentials stored in the atsd.config
file.
Download
curl -O https://raw.githubusercontent.com/axibase/atsd/master/sql/client/sql.sh
Permissions
Grant execution permissions to the sql.sh
script.
chmod +x sql.sh
Configuration
Create an atsd.config
file located in the same directory as the sql.sh
file.
Specify the database URL and user credentials. If the URL protocol is HTTPS, the query and the results are encrypted.
url=https://192.0.2.6:8443/api/sql
insecure=true
user=username
password=password
The user must have the API_DATA_READ
role and necessary entity read
permissions.
The client is stateless with each query triggering a separate HTTP request with the Basic
authentication.
Parameters
Name | Type | Description |
---|---|---|
-o , --output | string | Output file where results are stored. If not specified, results are printed to stdout . |
-i , --input | string | Input file containing SQL query to execute. |
-q , --query | string | SQL query text enclosed in double quotes. Ignored if query is read from input file. Escape double quotes contained in query text with a backslash. |
-f , --format | string | Output format. Default: csv . Supported options: csv , json . |
Examples
Execute inline query and print results to stdout
.
./sql.sh -q "SELECT * FROM \"mpstat.cpu_busy\" WHERE datetime > now - 1*minute LIMIT 3"
Execute inline query and store results in /tmp/report-2.csv
.
./sql.sh --output /tmp/report-2.csv --query "SELECT entity, value FROM \"mpstat.cpu_busy\" WHERE datetime > now - 1*minute LIMIT 3"
Execute query specified in the query.sql
file and write CSV results to /tmp/report-1.csv
.
./sql.sh -o /tmp/report-1.csv -i query.sql -f csv
Execute inline query and redirect output to a file.
./sql.sh -q "SELECT * FROM \"mpstat.cpu_busy\" WHERE datetime > now-1*hour LIMIT 2" > /tmp/test.csv
Execute inline query with escaped double quotes.
./sql.sh -q "SELECT * FROM \"mpstat.cpu_busy\" WHERE datetime > now-1*hour LIMIT 5"
Execute a multi-line query.
./sql.sh -q "SELECT * FROM \"mpstat.cpu_busy\" WHERE
datetime > now-1*hour LIMIT 5"