Running a script (with streaming support)
Warning
This command is deprecated.
The preferred way to run queries in YDB CLI is to use the ydb sql
command.
You can use the yql
subcommand to run a YQL script. The script can include queries of different types. Unlike scripting yql
, the yql
subcommand establishes a streaming connection and retrieves data through it. With the in-stream query execution, no limit is imposed on the amount of data read.
General format of the command:
ydb [global options...] yql [options...]
global options
: Global parameters.options
: Parameters of the subcommand.
View the description of the YQL script command:
ydb yql --help
Parameters of the subcommand
Name |
Description |
|
The time within which the operation should be completed on the server. |
|
Statistics mode. Acceptable values:
|
|
Text of the YQL query to be executed. |
|
Path to the text of the YQL query to be executed. |
|
Result format. Possible values:
|
Working with parameterized queries
A brief help is provided below. For a detailed description with examples, see Running parametrized YQL queries and scripts.
Name | Description |
---|---|
-p, --param |
The value of a single parameter of a YQL query, in the format: $name=value , where $name is the parameter name and value is its value (a valid JSON value). |
--param-file |
Name of the file in JSON format and in UTF-8 encoding that specifies values of the parameters matched against the YQL query parameters by key names. |
--input-format |
Format of parameter values. Applies to all the methods of parameter transmission (among command parameters, in a file or using stdin ).Acceptable values: |
--stdin-format |
The parameter format and framing for stdin . To set both values, specify the parameter twice.Format of parameter encoding for stdin Acceptable values:
stdin isn't specified, the format set in --input-format is used.Classification of parameter sets for stdin (framing)Acceptable values:
|
--stdin-par |
The name of the parameter whose value will be sent over stdin is specified without a $ . |
--batch |
The batch mode of transmitting parameter sets received via stdin .Acceptable values:
|
--batch-limit |
A maximum number of sets of parameters per batch in the adaptive batch mode. The setting of 0 removes the limit.The default value is 1000 . |
--batch-max-delay |
The maximum delay related to processing the resulting parameter set in the adaptive batch mode. It's set as a number of s , ms , m .Default value: 1s (1 second). |
Examples
Note
The examples use the quickstart
profile. To learn more, see Creating a profile to connect to a test database.
A script to create a table, populate it with data, and select data from the table:
ydb -p quickstart yql -s '
CREATE TABLE series (series_id Uint64, title Utf8, series_info Utf8, release_date Date, PRIMARY KEY (series_id));
COMMIT;
UPSERT INTO series (series_id, title, series_info, release_date) values (1, "Title1", "Info1", Cast("2023-04-20" as Date));
COMMIT;
SELECT * from series;
'
Command output:
┌──────────────┬───────────┬─────────────┬──────────┐
| release_date | series_id | series_info | title |
├──────────────┼───────────┼─────────────┼──────────┤
| "2023-04-20" | 1 | "Info1" | "Title1" |
└──────────────┴───────────┴─────────────┴──────────┘
Running a script from the example above saved as the script1.yql
file, with results output in JSON
format:
ydb -p quickstart yql -f script1.yql --format json-unicode
Command output:
{"release_date":"2023-04-20","series_id":1,"series_info":"Info1","title":"Title1"}
You can find examples of passing parameters to scripts in the article on how to pass parameters to YQL execution commands.