Команды точки
Команды точки доступны в клиенте DuckDB CLI. Чтобы использовать одну из этих команд, начните строку с точки (.) и сразу после нее введите имя команды, которую вы хотите выполнить. Дополнительные аргументы команды вводятся через пробел после команды. Если аргумент должен содержать пробел, для его обертывания можно использовать одинарные или двойные кавычки. Команды точки должны быть введены в одной строке, и пробелов перед точкой быть не должно. Точка с запятой в конце строки не требуется. Чтобы увидеть доступные команды, используйте команду .help
Команды точки
| Команда | Описание |
|---|---|
.bail on|off | Останавливает выполнение после возникновения ошибки. По умолчанию: off
|
.binary on|off | Включает или выключает двоичный вывод. По умолчанию: off
|
.cd DIRECTORY | Изменяет рабочую директорию на DIRECTORY
|
.changes on|off | Отображает количество строк, изменённых запросом SQL |
.check GLOB | Ошибка, если вывод с момента .testcase не совпадает |
.columns | Столбцовый вывод результатов запроса |
.constant ?COLOR? | Устанавливает цвет подсветки синтаксиса для констант |
.constantcode ?CODE? | Устанавливает код подсветки синтаксиса для констант |
.databases | Список имён и файлов подключенных баз данных |
.echo on|off | Включает или выключает вывод команд. |
off | |
.excel | Отображает вывод следующей команды в виде таблицы |
.exit ?CODE? | Выход из программы с кодом возврата CODE
|
.explain ?on|off|auto? | Изменяет режим форматирования EXPLAIN. По умолчанию: auto
|
.fullschema ?--indent? | Отображает схему и содержимое таблиц sqlite_stat |
.headers on|off | Включает или выключает отображение заголовков |
off | |
.help ?-all? ?PATTERN? | Отображение справки по команде PATTERN
|
.highlight [on|off] | Включение/выключение подсветки синтаксиса в оболочке on/off
|
.import FILE TABLE | Импорт данных из FILE в TABLE |
.indexes ?TABLE? | Отображение имён индексов |
.keyword ?COLOR? | Устанавливает цвет подсветки синтаксиса для ключевых слов |
.keywordcode ?CODE? | Устанавливает код подсветки синтаксиса для ключевых слов |
.lint OPTIONS | Отчёт о потенциальных проблемах со схемой. |
.log FILE|off | Включение/выключение логирования. FILE может быть stderr/stdout
|
.maxrows COUNT | Устанавливает максимальное количество строк для отображения. Только для режима duckbox |
.maxwidth COUNT | Устанавливает максимальную ширину в символах. 0 по умолчанию соответствует ширине терминала. Только для режима duckbox |
.mode MODE ?TABLE? | Установка режима вывода output mode |
.multiline | Установка многострочного режима (по умолчанию) |
.nullvalue STRING | Использование STRING вместо значений NULL |
.once ?OPTIONS? ?FILE? | Вывод для следующей команды SQL только в FILE |
.open ?OPTIONS? ?FILE? | Закрытие существующей базы данных и повторное открытие FILE |
.output ?FILE? | Отправка вывода в FILE или stdout, если FILE опущено |
.parameter CMD ... | Управление привязками параметров SQL |
.print STRING... | Печать литерала STRING |
.prompt MAIN CONTINUE | Замена стандартных приглашений |
.quit | Выход из программы |
.read FILE | Чтение входных данных из FILE |
.rows | Строчный вывод результатов запроса (по умолчанию) |
.schema ?PATTERN? | Показать CREATE операторы, соответствующие PATTERN |
.separator COL ?ROW? | Изменение разделителей столбцов и строк |
.sha3sum ... | Вычисление хеша SHA3 содержимого базы данных |
.shell CMD ARGS... | Выполнение CMD ARGS... в системной оболочке |
.show | Отображение текущих значений различных настроек |
.singleline | Установка однострочного режима |
.system CMD ARGS... | Выполнение CMD ARGS... в системной оболочке |
.tables ?TABLE? | Список имён таблиц соответствующих шаблону LIKE TABLE |
.testcase NAME | Начало перенаправления вывода в NAME |
.timer on|off | Включение/выключение таймера SQL |
.width NUM1 NUM2 ... | Установка минимальной ширины столбцов для столбцового вывода |
Использование команды .help
Текст .help может быть отфильтрован, передав строку текста в качестве второго аргумента.
.help m
.maxrows COUNT Sets the maximum number of rows for display (default: 40). Only for duckbox mode. .maxwidth COUNT Sets the maximum width in characters. 0 defaults to terminal width. Only for duckbox mode. .mode MODE ?TABLE? Set output mode
.output: Запись результатов в файл
По умолчанию DuckDB CLI отправляет результаты в стандартный вывод терминала. Однако это можно изменить с помощью команд .output или .once. В качестве параметра передайте желаемый путь к выходному файлу. Команда .once выведет только следующий набор результатов, а затем вернётся к стандартному выводу, но .output перенаправит весь последующий вывод в указанный файл. Обратите внимание, что каждый результат перезапишет весь файл в указанном месте. Чтобы вернуться к стандартному выводу, введите .output без параметра файла.
В этом примере формат вывода меняется на markdown, место назначения определяется как Markdown-файл, а затем DuckDB запишет вывод SQL-запроса в этот файл. Затем вывод возвращается в стандартный вывод с помощью .output без параметров.
.mode markdown .output my_results.md SELECT 'taking flight' AS output_column; .output SELECT 'back to the terminal' AS displayed_column;
Файл my_results.md будет содержать:
| output_column | |---------------| | taking flight |
Терминал затем отобразит:
| displayed_column | |----------------------| | back to the terminal |
Частым форматом вывода является CSV (comma separated values). DuckDB поддерживает синтаксис SQL для экспорта данных в CSV или Parquet, но если нужно, можно использовать специфичные для CLI команды для записи в CSV.
.mode csv .once my_output_file.csv SELECT 1 AS col_1, 2 AS col_2 UNION ALL SELECT 10 AS col1, 20 AS col_2;
Файл my_output_file.csv будет содержать:
col_1,col_2
1,2
10,20
Передавая специальные опции (флаги) команде .once, результаты запроса также можно отправлять во временный файл и автоматически открывать в предпочтительной программе пользователя. Используйте флаг -e для текстового файла (открывается в стандартном текстовом редакторе) или флаг -x для CSV-файла (открывается в стандартном табличном редакторе). Это полезно для более детального анализа результатов запроса, особенно если набор результатов достаточно большой. Команда .excel эквивалентна .once -x
.once -e SELECT 'quack' AS hello;
Результаты затем откроются в стандартном текстовом редакторе системы, например:
Запрос схемы базы данных
Все клиенты DuckDB поддерживают запрос схемы базы данных с помощью SQL, но в CLI есть дополнительные команды точки, которые могут упростить понимание содержимого базы данных. Команда .tables вернёт список таблиц в базе данных. Она имеет необязательный аргумент, который будет фильтровать результаты в соответствии с LIKE шаблоном.
CREATE TABLE swimmers AS SELECT 'duck' AS animal; CREATE TABLE fliers AS SELECT 'duck' AS animal; CREATE TABLE walkers AS SELECT 'duck' AS animal; .tables
fliers swimmers walkers
Например, чтобы отфильтровать только таблицы, содержащие l, используйте шаблон LIKE %l%
.tables %l%
fliers walkers
Команда .schema покажет все SQL-описания, используемые для определения схемы базы данных.
.schema
CREATE TABLE fliers (animal VARCHAR); CREATE TABLE swimmers (animal VARCHAR); CREATE TABLE walkers (animal VARCHAR);
Настройка подсветки синтаксиса
По умолчанию оболочка включает поддержку подсветки синтаксиса. Подсветка синтаксиса CLI может быть настроена с помощью следующих команд.
Чтобы отключить подсветку:
.highlight off
Чтобы включить подсветку:
.highlight on
Чтобы настроить цвет подсветки констант:
.constant [red|green|yellow|blue|magenta|cyan|white|brightblack|brightred|brightgreen|brightyellow|brightblue|brightmagenta|brightcyan|brightwhite]
.constantcode [terminal_code]
Чтобы настроить цвет подсветки ключевых слов:
.keyword [red|green|yellow|blue|magenta|cyan|white|brightblack|brightred|brightgreen|brightyellow|brightblue|brightmagenta|brightcyan|brightwhite]
.keywordcode [terminal_code]
Импорт данных из CSV
Устарело. Эта функция включена только для совместимости и может быть удалена в будущем. Используйте функцию
read_csvили операторCOPYдля загрузки CSV-файлов.
DuckDB поддерживает синтаксис SQL для прямого запроса или импорта CSV-файлов, но если нужно, можно использовать специфичные для CLI команды для импорта CSV. Команда .import принимает два аргумента и также поддерживает несколько опций. Первый аргумент — путь к CSV-файлу, а второй — имя таблицы DuckDB, которую нужно создать. Поскольку DuckDB требует более строгой типизации, чем SQLite (на котором основан DuckDB CLI), целевая таблица должна быть создана до использования команды .import. Чтобы автоматически определить схему и создать таблицу из CSV, см. read_csv примеры в документации по импорту.
В этом примере генерируется CSV-файл, изменяя режим вывода на CSV и устанавливая местоположение выходного файла:
.mode csv .output import_example.csv SELECT 1 AS col_1, 2 AS col_2 UNION ALL SELECT 10 AS col1, 20 AS col_2;
После записи CSV можно создать таблицу с нужной схемой и импортировать CSV. Вывод возвращается в терминал, чтобы избежать дальнейшего редактирования указанного выше выходного файла. Опция --skip N используется для пропуска первой строки данных, так как это заголовок, а таблица уже создана с правильными именами столбцов.
.mode csv .output CREATE TABLE test_table (col_1 INTEGER, col_2 INTEGER); .import import_example.csv test_table --skip 1
Обратите внимание, что команда .import использует текущие .mode и .separator настройки при определении структуры импортируемых данных. Опцию --csv можно использовать для переопределения этого поведения.
.import import_example.csv test_table --skip 1 --csv
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/api/cli/dot_commands.html