cbq: The Command Line Shell for SQL++
cbq is a comprehensive command line shell for SQL++. It is a powerful, developer friendly tool that enables you to query and update data from Couchbase Server. The cbq shell enables you to perform all the operations that are supported by the Query Workbench and more, such as additional scripting functionality.
The cbq shell executable, cbq
, is available in the Couchbase Server installation directory.
It is also available in the Couchbase Server tools package beginning with version 7.6.2.
Examples on this Page
The examples on this page use the travel-sample
dataset, which is supplied with Couchbase Server.
For instructions on how to install the sample data, see Sample Buckets.
-
Linux
-
macOS
-
Microsoft Windows
-
Shell Command
In the command line examples:
-
$BASE_URL
is the URL of any node in the Couchbase cluster. -
$USER
is the user name to connect to Couchbase Server. -
$PASSWORD
is the password to connect to Couchbase Server.
In the command line examples:
-
$BASE_URL
is the URL of any node in the Couchbase cluster. -
$USER
is the user name to connect to Couchbase Server. -
$PASSWORD
is the password to connect to Couchbase Server.
In the command line examples:
-
%BASE_URL%
is the URL of any node in the Couchbase cluster. -
%USER%
is the user name to connect to Couchbase Server. -
%PASSWORD%
is the password to connect to Couchbase Server.
In the shell command examples:
-
<BASE_URL>
is the URL of any node in the Couchbase cluster. -
<USER>
is the user name to connect to Couchbase Server. -
<PASSWORD>
is the password to connect to Couchbase Server.
Running the cbq Shell
When starting the cbq shell you can provide a set of command line options. If no options are present then cbq assumes default values for expected options.
To run cbq
:
-
Open a command window.
-
Change to the directory where the Couchbase command line tools are installed.
-
Linux
-
macOS
-
Microsoft Windows
cd /opt/couchbase/bin
cd /Applications/Couchbase\ Server.app/Contents/Resources/couchbase-core/bin
cd C:\Program Files\Couchbase\Server\bin
-
-
Run the following command to connect to the node or cluster and start the interactive query shell:
-
Linux
-
macOS
-
Microsoft Windows
./cbq -u $USER -p $PASSWORD -e $BASE_URL
./cbq -u $USER -p $PASSWORD -e $BASE_URL
cbq -u %USER% -p %PASSWORD% -e %BASE_URL%
-
For more information about connecting to a node or cluster, see Connecting to the Cluster or Query Node, Providing Credentials, and Using an Encrypted Connection.
For the complete list of command line options, see Table 3.
Executing a Single Command
When you start the cbq shell, the cbq shell prompt is displayed.
cbq>
The cbq shell interface accepts accepts shell commands as well as SQL++ commands.
All the cbq shell commands start with a backslash (\
).
If the command does not start with a backslash (\
), the cbq shell interprets the command as a SQL++ command.
-
To execute a SQL++ query at the cbq prompt, type the query. At the end of the query, type a semicolon
;
and press Enter. -
To execute a cbq command at the cbq prompt, type the command name starting with a backslash
\
. At the end of the command, type a semicolon;
and press Enter.
The cbq shell enables you to manipulate query parameters. See Parameter Manipulation for details.
For the complete list of shell commands, see Table 4.
Support for Multi-line Queries
The cbq shell supports multi-line queries by default, enabling you to enter a query over multiple lines.
When entering a query, you can hit Enter without specifying a semicolon (;
) at the end of the line to move the cursor to the next line.
The prompt >
indicates that the shell is in multi-line mode.
For example:
cbq> SELECT *
> FROM `travel-sample`.inventory.airline
> LIMIT 1;
When you’re done, use a semicolon ;
to indicate the end of the query, and then press Enter to execute the query.
Handling Comments
You can add comments in your query by preceding the comment with a #
or --
.
The cbq shell interprets a line that starts with #
or --
as a comment, logs the line into history, and returns a new prompt.
No other action is taken.
SELECT *
#This is the first comment
FROM `travel-sample`.inventory.airline
--This is the second comment
LIMIT 1;
However, if a comment exists within a statement, it is considered as part of the SQL++ command.
If the cbq shell encounters a block comment (enclosed between /*
... */
) within a statement, it sends the block comment to the query service.
SELECT * FROM `travel-sample`.inventory.airline /* Block comment */ LIMIT 1;
File Based Operations
The cbq shell can execute SQL++ and shell commands contained in files using file-based commands and options. See File Based Operations for more information.
History
The cbq
shell stores the history for every session.
All the commands executed in a session are stored in history.
By default, history is stored in ~/.cbq_history
.
You can change the name of the file using the SET command to set the predefined parameter histfile
.
See Parameter Manipulation for more information.
By default, all the commands are stored in the specified file. You can scroll through history and retrieve the commands from history using the scrolling arrow keys. Once the query is on the command prompt, you can edit it before executing the updated query.
Help
Help displays the help information for the shell commands and for the general usage of cbq.
-
Command Line Option
-
Shell Command
Use the -h
or --help
command line option when bringing up the shell to display the information for all available options.
./cbq -h
Use the \HELP
shell command during a session to display information for specific shell commands.
If you specify one or more commands, the shell displays the usage information for the specified commands.
If you do not specify a command, the cbq shell lists all the commands for which syntax help is available.
\HELP;
Connecting to the Cluster or Query Node
You can connect the cbq shell to Couchbase Server through any of the nodes in the cluster.
-
Command Line Option
-
Shell Command
To establish a connection on startup, use the -e
or --engine
command line option, optionally followed by a URL.
./cbq -e $BASE_URL -u $USER -p $PASSWORD
Connected to : http://<HOST>:8091/. Type Ctrl-D or \QUIT to exit. Path to history file for the shell : ~/.cbq_history
To establish a connection during a session, use the \CONNECT
shell command, optionally followed by a URL.
\CONNECT <BASE_URL>;
Connected to : http://<HOST>:8091. Type Ctrl-D or \QUIT to exit.
The URL may contain up to three components: the protocol scheme, the host, and a port number.
The URL is optional and if it is not specified, the default URL http://localhost:8091
is used.
An error is thrown if the URL is invalid.
The cbq shell supports the http://
, https://
, couchbase://
and couchbases://
protocol schemes.
The https://
and couchbases://
protocol schemes are encrypted.
For more details, refer to Using an Encrypted Connection.
The host may be the IP address or hostname of any node in the cluster, as cbq will automatically discover the query nodes.
The cbq shell supports both IPV4 and IPV6 addresses.
For example: localhost
, node1
, 127.0.0.1
, or [fd63:6f75:6368:1075:816:3c1d:789b:bc4]
.
The couchbase://
and couchbases://
protocol schemes support the domain name service (DNS).
When using one of these protocol schemes, the host may be a domain name which is resolved using DNS.
For example, this enables you to connect to a cluster or node over the internet.
You may optionally specify the port when using the http://
or https://
protocol schemes.
When connecting to the query service, use the query port 8093, or 18093 for an encrypted connection.
When connecting to the cluster, you don’t need to specify the port as the connection uses round robin to find a query service to connect to.
If you want to specify a port, use the admin port 8091, or 18091 for an encrypted connection.
You cannot specify the port when using the couchbase://
or couchbases://
protocol schemes.
Disconnecting
You can close the connection with a node or cluster during the session without exiting the shell using the \DISCONNECT
command.
If the shell is not connected to any endpoint, an error with a message that the shell is not connected to any instance is thrown.
\DISCONNECT;
Couchbase query shell not connected to any endpoint. Use \CONNECT command to connect.
Bringing Up an Unconnected Instance
You can bring up the shell without connecting to any query service or cluster node by using the -ne
or --no-engine
option.
After starting cbq without any connection, you can connect to a node using the \CONNECT
command.
./cbq -ne
Path to history file for the shell : ~/.cbq_history
Exiting the cbq Shell
You can exit the cbq shell by pressing Ctrl+D or by using the \EXIT
or \QUIT
command.
The cbq shell first saves the history, closes existing connections, saves the current session in a session file, resets all environment variables, and then closes the shell liner interface.
\EXIT;
$
Providing Credentials
You can pass a single user name credential to the cbq shell on startup using the -u
or --username
command line option, followed by the user name.
The shell then prompts you for a password.
./cbq -e $BASE_URL -u $USER
Enter Password: Connected to : http://<HOST>:8091/. Type Ctrl-D or \QUIT to exit.
You can also provide a single password credential using the -p
or --password
command line option, followed by the password.
You cannot use this option by itself.
It must be used with the -u
option to specify the user name that the password is associated with.
./cbq --e $BASE_URL -u $USER -p $PASSWORD
Connected to : http://<HOST>:8091/. Type Ctrl-D or \QUIT to exit.
Providing Credentials in the Connection String
You can pass the username and password by inserting them into the connection string. This method is not recommended when starting cbq, as you must quote or URL-encode any special characters in the username or password. However, this method may be useful for specifying the username and password when connecting to the cluster or node within a cbq session.
To pass credentials in the connection string:
-
Add the username immediately after the protocol scheme.
-
After the username, add a colon
:
followed by the password. -
After the password, add an at sign
@
followed by the rest of the connection string.
-
Command Line Option
-
Shell Command
To pass credentials on startup, use the -e
or --engine
command line option, and specify the username and password in the URL.
In this example, $HOST
and $PORT
are the parts of the cluster or node URL following the protocol scheme.
./cbq -engine="http://$USER:$PASSWORD@$HOST:$PORT/"
To pass credentials during a session, use the \CONNECT
shell command, and specify the username and password in the URL.
In this example, <HOST>
and <PORT>
are the parts of the cluster or node URL following the protocol scheme.
\CONNECT http://<USER>:<PASSWORD>@<HOST>:<PORT>/;
Providing Multiple Credentials for Authorization
When starting the cbq shell, you can set the credentials using a single command line option, as an alternative to specifying the username and password separately. This method is not recommended, as you must quote or escape any special characters in the username or password.
You can also use the \SET
or \PUSH
shell command to set the credentials query parameter within a session.
This enables you to change credentials before executing a query, for example to switch to a database user with access to another keyspace.
Note that the credentials are set for the remainder of the shell session and not just on a per query basis.
The list of credentials can contain one or multiple credentials.
Each credential consists of an identity and a password separated by a colon :
.
To specify multiple credentials, append all the user names and passwords to the same credentials array.
-
Command Line Option
-
Shell Command
To set the credentials on startup, use the -c
or --credentials
command line option, followed by the list of credentials.
In this example, $USER2
and $PASSWORD2
are alternative credentials with access to a second keyspace.
./cbq e $BASE_URL -c=$USER:$PASSWORD,$USER2:$PASSWORD2
To change credentials during a session, use the \SET
shell command to specify the -creds
query parameter, followed by the list of credentials.
In this example, <USER2>
and <PASSWORD2>
are alternative credentials with access to a second keyspace.
\SET -creds <USER>:<PASSWORD>, <USER2>:<PASSWORD2>;
For more information about using multiple credentials, see Query Service REST API and Request with Authentication — Request Parameter.
Displaying the Credentials
You can display the credentials for the current session using the \ECHO shell command. This command displays only the user names (and not the passwords).
\ECHO -creds;
<USER>:*
You can also display a full list of variables using the \SET command specified without any arguments.
\SET;
Query Parameters : Parameter name : creds Value : [ "<USER>:*" ] Named Parameters : User Defined Session Parameters : Predefined Session Parameters : Parameter name : histfile Value : [".cbq_history"] Parameter name : batch Value : ["off"] Parameter name : quiet Value : [false]
Using an Encrypted Connection
The cbq shell supports self-signed certificates for encrypting communication between clusters.
You can connect to the cluster or node with an encrypted protocol scheme — that is, either https://
or couchbases://
.
To do this, you can provide the root CA certificate, the chain certificate, and the client key file using the --cacert, --cert, and --key options.
You can use the --no-ssl-verify option to skip the verification of certificates.
When connecting to a cluster or node with an encrypted protocol scheme, the default ports are 18091 and 18093.
You cannot specify the port when using the couchbases://
protocol scheme.
For more details, refer to Connecting to the Cluster or Query Node.
Parameter Manipulation
The cbq shell categorizes parameters into the following types:
-
Query parameters
-
Named parameters
-
User-defined session variables
-
Pre-defined session variables
Parameter Configuration
When using parameters, you can set a stack of values for each parameter.
You can either push a new value onto the stack using the \PUSH
command, or set the current value for a parameter using the \SET
command.
The \SET
command always modifies the top of a variable’s stack while the \PUSH
command adds to the stack.
When you use \PUSH
with no arguments, it copies the top element of every parameter’s stack (except the predefined parameters) and pushes that copy to the top of its respective stack.
As a result, each stack grows by 1, but the values are preserved.
You can then use the \SET
command to modify the top value.
To unset the values from a parameter’s stack, you can use the \UNSET
command to remove all the values from the stack and delete the corresponding parameter stack.
However, if you want to delete a single value from the settings, use the \POP
command.
When you use the \POP
command with no arguments, it pops the one value from the top of each parameter’s stack.
To display all the parameters defined in a session, use the \SET
command with no arguments.
Setting Variable Values
To set the value of a parameter, use the \SET
or \PUSH
shell command, followed by a parameter name and parameter value.
The parameter name may have a prefix, depending on the type of parameter: query parameter, named parameter, user-defined session variable, or predefined session variable. The cbq shell uses the prefix to differentiate between the different types of parameters.
Prefix | Parameter Type |
---|---|
|
Query parameter |
|
Named parameters |
|
User defined session variable |
No prefix |
Predefined (built-in) session variable |
Positional parameters are set using the -args query parameter.
|
For more details about the available query parameters (prefixed by -
), see Request-Level Parameters.
As a best practice, save the initial set of basic parameters and their default values using the \PUSH
command (with no arguments).
The following example sets the airport
named parameter, pushes two positional parameters to the args
query parameter stack, and then displays all parameters.
\SET -$airport "SJC";
\PUSH -args ["LAX", 6];
\SET;
Query Parameters :: Parameter name : args Value [["LAX",6]] Named Parameters :: Parameter name : airport Value ["SJC"] User Defined Session Parameters :: Predefined Session Parameters :: Parameter name : histfile Value [".cbq_history"]
The following example pushes a new value to the airport
named parameter stack, duplicates the top value in each stack except the predefined session parameters, and then displays all parameters.
\PUSH -$airport "SFO";
\PUSH;
\SET;
Query Parameters :: Parameter name : args Value [["LAX",6] ["LAX",6]] Named Parameters :: Parameter name : airport Value ["SJC" "SFO" "SFO"] User Defined Session Parameters :: Predefined Session Parameters :: Parameter name : histfile Value [".cbq_history"]
The following example sets the top level of the airport
named parameter stack to a new value, and then displays all parameters.
\SET -args ["SFO", 8];
\SET;
Query Parameters :: Parameter name : args Value [["LAX",6] ["SFO",8]] Named Parameters :: Parameter name : airport Value ["SJC" "SFO" "SFO"] User Defined Session Parameters :: Predefined Session Parameters :: Parameter name : histfile Value [".cbq_history"]
Handling Named Parameters
To define named parameters, use the \SET
or \PUSH
command.
For each named parameter, prefix the variable name with -$
or -@
.
For more details about named parameters, see Named Parameters and Positional Parameters.
The following example creates named parameters r
and date
with values 9.5
and "1-1-2016"
respectively.
\SET -$r 9.5;
\SET -@date "1-1-2016";
Handling Positional Parameters
To define positional parameters, use the \SET
or \PUSH
command with the -args
query parameter, followed by an array containing the different values that correspond to positions within the query.
For more details about positional parameters, see Named Parameters and Positional Parameters.
\SET -args [ 9.5, "1-1-2016"];
Handling Predefined Session Variables
The following table lists the available predefined session variables.
Variable Name | Possible Values | Description |
---|---|---|
|
Valid file name |
Specifies the file name to store the command history. By default the file is saved in the user’s home directory. Default: |
|
String ( |
This variable is available only with the Analytics Service. When specified, cbq sends the queries to Analytics only when you hit EOF or \ to indicate the end of the batch input. Default: |
|
Boolean |
When specified, disables the startup connection message for the cbq shell. Default: |
Resetting Variable Values
You can reset the value of a variable by either popping it or deleting it altogether.
To pop the top of every parameter’s stack once, use the \POP
command without any arguments.
\POP;
\SET;
Query Parameters :: Parameter name : args Value [["LAX",6]] Named Parameters :: Parameter name : airport Value ["SJC" "SFO"] User Defined Session Parameters :: Predefined Session Parameters :: Parameter name : histfile Value [".cbq_history"]
To pop the top value from a single parameter’s stack, use the \POP
command, followed by the parameter prefix and parameter name.
\POP -$airport;
\SET;
Query Parameters :: Parameter name : args Value [["LAX",6]] Named Parameters :: Parameter name : airport Value ["SJC"] User Defined Session Parameters :: Predefined Session Parameters :: Parameter name : histfile Value [".cbq_history"]
To pop all the values of a parameter’s stack and then delete the parameter, use the \UNSET
command, followed by the parameter prefix and parameter name.
\UNSET -$airport;
\SET;
Query Parameters :: Parameter name : args Value [["LAX",6]] Named Parameters :: User Defined Session Parameters :: Predefined Session Parameters :: Parameter name : histfile Value [".cbq_history"]
Using ECHO to Display Values of Parameters and More
The ECHO command displays the current values of the parameters set for a session. You can use it to display any input string or command aliases that have been created using the ALIAS shell command.
Echo a String or Statement
To echo a string or a SQL++ statement, use the \ECHO
command, followed by the string or statement.
\ECHO hello;
hello
Command Alias
Using the ALIAS shell command, you can define and store aliases for commands. This is useful when you have lengthy queries that need to be executed often.
Create Command Aliases
To define an alias, use the \ALIAS
command, followed by the command alias name and the query.
\ALIAS travel-alias1 SELECT * FROM `travel-sample`.inventory.airline LIMIT 1;
Run Command Aliases
To run the command alias, type two backslashes \\
, followed by the command alias name.
\\travel-alias1;
{
"requestID": "b25c84d6-7b7b-440a-a286-5027e6ecbbb5",
"signature": {
"*": "*"
},
"results": [
{
"airline": {
"callsign": "MILE-AIR",
"country": "United States",
"iata": "Q5",
"icao": "MLA",
"id": 10,
"name": "40-Mile Air",
"type": "airline"
}
}
],
"status": "success",
// ...
}
List Command Aliases
To list all the existing aliases, use the \ALIAS
command without options.
\ALIAS;
serverversion select version() travel-alias1 SELECT * FROM `travel-sample`.inventory.airline LIMIT 1;
Delete Command Aliases
You can delete a defined alias using the \UNLIAS
command, followed by the alias name.
This command can take multiple arguments and deletes the defined alias for every input name.
\UNALIAS serverversion travel-alias1;
\ALIAS;
ERROR 141 : Alias does not exist :
Executing Prepared Statements
You can use the shell command to execute prepared statements. As a pre-requisite, you must first prepare a statement. To prepare and execute a statement, follow these steps:
-
Set the named and positional parameters that are present in the prepared statement.
-
Prepare a statement using the SQL++ PREPARE statement. If you do not specify a name for the prepared statement, a unique name is assigned. You can use this auto-assigned name when executing the prepared statement. If you specify a name, you can use this name to run the prepared statement.
-
Execute the prepared statement using the SQL++ EXECUTE statement.
Canceling a Query
You can cancel a running query by using the Ctrl+C keys.
Connection Timeout Parameter
You can use the timeout parameter to limit the running time of a query. This parameter specifies the time to wait before returning an error when executing a query.
Timeout can be specified in the following units: ns
for nanoseconds, μs
for microseconds, ms
for milliseconds, s
for seconds, m
for minutes, and h
for hours.
Examples of valid values include "0.5s"
, "10ms"
, or "1m"
.
An error is thrown if the timeout is invalid.
-
Command Line Option
-
Shell Command
Use the -t
or --timeout
command line option, followed by the length of the timeout.
./cbq -e $BASE_URL -u $USER -p $PASSWORD --timeout="2s"
Use the \SET
shell command to set the TIMEOUT
parameter, followed by the length of the timeout.
\SET -TIMEOUT 1ms;
File Based Operations
Using the file based commands and options, the cbq shell can execute SQL++ and shell commands contained in files. There are two ways to accomplish this.
-
Command Line Option
-
Shell Command
Use the -f
or --file
command line option, followed by the input file.
The cbq shell executes the commands present in the input file, prints them to stdout (or to a file if using redirects), and exits.
Consider the input file, sample.txt
, containing the following commands.
CREATE PRIMARY INDEX ON `travel-sample`.inventory.airline USING GSI;
SELECT * from `travel-sample`.inventory.airline LIMIT 2;
SELECT callsign from `travel-sample`.inventory.airline LIMIT 3;
\HELP;
./cbq -e $BASE_URL -u $USER -p $PASSWORD -f=sample.txt
Connected to : http://<HOST>:8091/. Type Ctrl-D or \QUIT to exit.
Path to history file for the shell : ~/.cbq_history
CREATE PRIMARY INDEX ON `travel-sample`.inventory.airline USING GSI;
{ ...
"results": [ ],
...
}
SELECT * from `travel-sample`.inventory.airline LIMIT 2;
{ ...
"results": [ ],
...
}
SELECT callsign from `travel-sample`.inventory.airline LIMIT 3;
{ ...
"results": [ ],
...
}
\HELP;
Help information for all shell commands.
...
$
Use the \SOURCE
shell command, followed by the input file.
The cbq shell executes the commands present in the input file and prints them to stdout, or to a file if using redirects.
Consider the input file, sample.txt
, containing the following commands.
CREATE PRIMARY INDEX ON `travel-sample`.inventory.airline USING GSI;
SELECT * from `travel-sample`.inventory.airline LIMIT 2;
SELECT callsign from `travel-sample`.inventory.airline LIMIT 3;
\HELP;
\SOURCE sample.txt;
CREATE PRIMARY INDEX ON `travel-sample`.inventory.airline USING GSI;
{ ...
"results": [ ],
...
}
SELECT * from `travel-sample`.inventory.airline LIMIT 2;
{ ...
"results": [ ],
...
}
SELECT callsign from `travel-sample`.inventory.airline LIMIT 3;
{ ...
"results": [ ],
...
}
\HELP;
Help information for all shell commands.
...
cbq>
Redirecting Results to a File
You can redirect all the output for a session or part of a session to a specified output file. If the file doesn’t exist, it is created. If the file already exists, it is overwritten.
-
Command Line Option
-
Shell Command
Use the -o
or --output
command line option, followed by the output file.
./cbq -e $BASE_URL -u $USER -p $PASSWORD -o temp_output.txt
To start redirecting commands during a session, use \REDIRECT
followed by the output file.
To stop redirecting commands, use \REDIRECT OFF
.
All the commands specified after \REDIRECT
and before \REDIRECT OFF
are saved into the specified output file.
You can specify multiple \REDIRECT
commands.
When you do so, the output file changes to the specified files and switches back to stdout
only when you specify \REDIRECT OFF
.
You can append redirected output to an existing file using File Append Mode.
\REDIRECT temp_output.txt;
CREATE PRIMARY INDEX ON `travel-sample`.inventory.airline USING GSI;
SELECT * FROM `travel-sample`.inventory.airline LIMIT 1;
\HELP;
\REDIRECT OFF;
File Append Mode
You can use file append mode to specify that cbq should append redirected output to the end of an existing file, rather than overwriting the existing file.
Note that file append mode is only available with the \REDIRECT
command within a shell session.
It is not available for the -o
or --output
command line option.
When you use the -o
or --output
command line option, the specified output file is always overwritten.
To use file append mode, include a plus sign +
at the start of the output path or filename.
\REDIRECT +temp_output.txt;
SELECT * FROM `travel-sample`.inventory.airline LIMIT 1;
\REDIRECT OFF;
Every time you start appending to the output file, a timestamp is added to the end of the output file, followed by any redirected commands and results.
-- <2021-07-30T14:48:43.661+01:00> : opened in append mode SELECT * FROM `travel-sample`.inventory.airline LIMIT 1 ...
Server and Shell Information
The cbq shell provides commands that convey information about the shell or cluster endpoints.
Version
You can find the version of the client (shell) by using either the command line option to display the current version of the shell and exit, or as a shell command to print the version of the shell during the shell session.
To display the version of the query service, use the VERSION() function in SQL++.
-
Command Line Option
-
Shell Command
Use the -v
or --version
command line option.
./cbq -v
GO VERSION : go1.22.2 SHELL VERSION : 7.6.2-3721 Use N1QL queries select version(); or select min_version(); to display server version.
Use the \VERSION
shell command.
\VERSION;
GO VERSION : go1.22.2 SHELL VERSION : 7.6.2-3721 Use N1QL queries select version(); or select min_version(); to display server version.
Copyright
You can view the copyright, attributions, and distribution terms of the command line query tool using the \COPYRIGHT
shell command.
\COPYRIGHT;
Copyright (c) 2016 Couchbase, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Exiting the cbq Shell
You can exit the cbq shell by pressing Ctrl+D or by using the \EXIT
or \QUIT
command.
The cbq shell first saves the history, closes existing connections, saves the current session in a session file, resets all environment variables, and then closes the shell liner interface.
\EXIT;
$
Executing a Script
You can use the --script
option to start cbq, execute a single SQL++ query, and exit the shell.
./cbq -u $USER -p $PASSWORD -e $BASE_URL \
--script="SELECT * FROM \`travel-sample\`.inventory.airline LIMIT 1;"
Connected to : http://<HOST>:8091/. Type Ctrl-D or \QUIT to exit. Path to history file for the shell : ~/.cbq_history SELECT * FROM `travel-sample`.inventory.airline LIMIT 1; { ... }
Available Command Line Options and Shell Commands
The command line options are case sensitive. The cbq shell commands are case insensitive. |
Option | Arguments | Description and Examples |
---|---|---|
|
string (url) |
The connection string consists of a protocol scheme, followed by a host, and optionally a port number to connect to the query service (8093) or the Couchbase cluster (8091). For more details, refer to Connecting to the Cluster or Query Node. Shell command: \CONNECT Default
Examples
Result
Connected to : http://<HOST>:8091/. Type Ctrl-D or \QUIT to exit. Path to history file for the shell : /Users/myuser1/.cbq_history |
|
boolean [1] |
When specified, the cbq shell does not connect to any query service. You must explicitly connect to a query service using the \CONNECT shell command. Default
Example
|
|
string ( |
Specifies whether to connect to a node’s principal or alternate address.
Default
Example
|
|
boolean [1] |
When specified, disables the startup connection message for the cbq shell. Default
Example
Result
|
|
boolean [1] |
Runs ADVISE on all queries in the specified file, or that are read from standard input, if a file is not provided with the Default
Example
queries.txt
Result
|
|
boolean [1] |
Only applicable when connecting to the Analytics Service. If specified, when you connect to a cluster, cbq automatically discovers and connects to an Analytics node. This option also switches on batch mode. Default
Example
|
|
string ( |
This option is available only with the Analytics Service. When specified, cbq sends the queries to Analytics only when you hit EOF or \ to indicate the end of the batch input. Default
Examples
You can also set the batch mode in the interactive session using the \SET command:
|
|
string |
Sets the query context parameter. For more information, see Query Context. Shell command: \SET Default
none Example
|
|
string (duration) |
Sets the query timeout parameter. For more information, see timeout. Shell command: \SET Default
Example
For further examples, see Connection Timeout Parameter. |
|
string |
Specifies a single user name to log in to Couchbase.
When used by itself, without the This option requires administration credentials and you cannot switch the credentials during a session. Couchbase recommends using the Default
none Example
Result
Enter Password: |
|
string |
Specifies the password for the given user name. You cannot use this option by itself. It must be used with the -u option to specify the user name. This option requires administration credentials and you cannot switch the credentials during a session. Couchbase recommends using the Default
none Example
|
|
string |
Specify the login credentials in the form of Shell command: \SET REST API: Default
none Example
|
|
boolean [1] |
When specified, provides the version of the cbq shell. To display the version of the query engine (this is not the same as the version of Couchbase Server itself), use one of the following SQL++ queries:
Shell command: \VERSION Default
Example
Result
GO VERSION : go1.21.6 SHELL VERSION : 7.6.0-2176 Use N1QL queries select version(); or select min_version(); to display server version. |
|
none |
|
|
string |
Provides a single command mode to execute a query from the command line. You can also use multiple Default
none Examples
Result
Path to history file for the shell : ~/.cbq_history \SET v 1 \SET b 2 \PUSH b3 ERROR 139 : Too few input arguments to command. \SET b 5 \SET Query Parameters : Named Parameters : User Defined Session Parameters : Predefined Session Parameters : Parameter name : histfile Value : [".cbq_history"] Parameter name : batch Value : ["off"] Parameter name : quiet Value : [false] Parameter name : v Value : [1] Parameter name : b Value : [5] |
|
string (path) |
Provides an input file which contains all the commands to be run. Shell command: \SOURCE Default
none Example
|
|
string (path) |
Specifies an output file where the commands and their results are to be written. If the file doesn’t exist, it is created. If the file already exists, it is overwritten. Shell command: \REDIRECT Default
none Example
|
boolean [1] |
Specifies whether the output should be formatted with line breaks and indents. This option is set to Default
Example
|
|
boolean [1] |
When specified, the cbq shell must exit when it encounters the first error. Default
Example
|
|
string (path) |
Only applicable when using an encrypted protocol scheme — either Specifies the path to the root CA certificate to verify the identity of the server. Default
none Example
|
|
string (path) |
Only applicable when using an encrypted protocol scheme — either Specifies the path to the chain certificate. Default
none Example
|
|
string (path) |
Only applicable when using an encrypted protocol scheme — either Specifies the path to the client key file. Default
none Examples
|
|
|
boolean [1] |
Only applicable when using an encrypted protocol scheme — either When specified, the cbq shell can skip the verification of certificates. Default
Examples
|
Shell Command | Arguments | Description and Examples |
---|---|---|
|
Connects cbq shell to the specified query engine or Couchbase cluster. The connection string consists of a protocol scheme, followed by a host, and optionally a port number to connect to the query service (8093) or the Couchbase cluster (8091). For more details, refer to Connecting to the Cluster or Query Node. Examples
|
|
none |
Disconnects the cbq shell from the query service or cluster endpoint. Example
Result
Couchbase query shell not connected to any endpoint. Use \CONNECT command to connect. |
|
|
none |
Exits cbq shell. Examples
|
|
Sets the top most value of the stack for the given variable with the specified value. Variables can be of the following types:
When the Examples
|
|
|
Pushes the specified value on to the given parameter stack. When the While each variable stack grows by 1, the previous values are preserved. Examples
Check variable stack
Result
Query Parameters : Parameter name : args Value : [[6,7] [8] [8]] ... |
|
|
Deletes or resets the entire stack for the specified parameter. Examples
Result
Query Parameters : ... |
|
|
Pops the top most value from the specified parameter’s stack. When the Examples
Result
Query Parameters : Parameter name : args Value : [[6,7] [8]] |
|
|
Creates a command alias for the specified cbq shell command or SQL++ statement.
You can then execute the alias using When the Examples
Result
serverversion select version() travel-limit1 SELECT * FROM `travel-sample`.inventory.airline LIMIT 1 Execute alias
Result
|
|
|
Deletes the specified alias. Examples
Result
serverversion select version() |
|
where |
If the input is a parameter, this command echoes (displays) the value of the parameter. The parameter must be prefixed according to its type. See Table 1 for details. If the input is not a parameter, the command echoes the statement as is. If the input is an alias, the command displays the value of an alias command. Examples
Result
select version() |
|
none |
||
|
Displays the help information for the specified command. When used without any arguments, it lists all the commands supported by the cbq shell. Example
Result
\ECHO args ... Echo the input value. args can be a name (a prefixed-parameter), an alias (command alias) or a value (any input statement). Example : \ECHO -$r ; \ECHO \\tempalias; |
|
none |
Displays the copyright, attributions, and distribution terms. Example
|
|
|
Reads and executes the commands from a file.
Multiple commands in the input file must be separated by For example, sample.txt
Example
|
|
|
Redirects the output of all the commands to the specified file until the cbq shell receives the If the file doesn’t exist, it is created. If the file already exists, it is overwritten. You can append redirected output to an existing file using File Append Mode. Example
|
|
none |
Redirects the output of subsequent commands from a custom file to standard output (os.stdout). Example
|
Shortcut Keys for cbq Shell
The following table lists the shortcut keys used by the cbq
shell.
Keystroke | Action |
---|---|
Ctrl+A, Home |
Move cursor to beginning of line |
Ctrl+E, End |
Move cursor to end of line |
Ctrl+B, Left |
Move cursor one character left |
Ctrl+F, Right |
Move cursor one character right |
Ctrl+Left |
Move cursor to previous word |
Ctrl+Right |
Move cursor to next word |
Ctrl+D, Del |
(if line is not empty) Delete character under cursor |
Ctrl+D |
(if line is empty) End of File - usually quits application |
Ctrl+C |
Reset input (create new empty prompt) |
Ctrl+L |
Clear screen (line is unmodified) |
Ctrl+T |
Transpose previous character with current character |
Ctrl+H, BackSpace |
Delete character before cursor |
Ctrl+W |
Delete word leading up to cursor |
Ctrl+K |
Delete from cursor to end of line |
Ctrl+U |
Delete from start of line to cursor |
Ctrl+P, Up |
Previous match from history |
Ctrl+N, Down |
Next match from history |
Ctrl+R |
Reverse Search history (Ctrl+S forward, Ctrl+G cancel) |
Ctrl+Y |
Paste from Yank buffer (Alt+Y to paste next yank instead) |
Tab |
Next completion |
Shift+Tab |
(after Tab) Previous completion |
Source: https://github.com/peterh/liner