Spec-Zone.ru › SQLite

Форматирование результатов запросов в CLI

Содержание
1. Введение
1.1. Краткое описание улучшений
1.2. Несколько коротких примеров:
2. Форматы вывода по умолчанию
3. Изменение форматов вывода
3.1. Режим вывода "list"
3.2. Режим вывода "quote"
3.3. Другие режимы вывода, похожие на list
3.4. Режим вывода "line"
3.5. Табличные режимы вывода
3.6. Перенос строк
3.7. Режим вывода "insert"
3.8. Режим вывода "split"
3.9. Режимы вывода "count" и "off"
3.10. Режимы вывода "batch" и "tty"
3.11. Пользовательские режимы вывода
4. Экранирование управляющих символов
5. Концы строк
6. Подробно о синтаксисе и параметрах .mode
6.1. --align STRING
6.2. --blob-quote ARG
6.3. --charlimit N
6.4. --border auto|off|on
6.5. --colsep STRING
6.6. --escape ESC
6.7. --linelimit N
6.8. --limits L,C,T
6.9. --list
6.10. --multiinsert N
6.11. --null STRING
6.12. --once
6.13. --quote ARG
6.14. --reset
6.15. --rowsep STRING
6.16. --screenwidth N
6.17. --tablename NAME
6.18. --tag NAME
6.19. --textjsonb BOOLEAN
6.20. --title ARG
6.21. --titlelimit N
6.22. --verbose
6.23. --widths LIST
6.24. --wordwrap BOOLEAN
6.25. --wrap N
6.26. --ww

1. Введение

В интерфейсе командной строки (или CLI) для SQLite версии 3.52.0 (2026-03-06) команда «.mode» dot-command была усовершенствована, чтобы предоставить больше возможностей для отображения результатов запросов. Однако гибкость влечёт за собой сложность. Поэтому работа команды ".mode" теперь описана в этом отдельном документе.

1.1. Краткое описание улучшений

  • Теперь команда ".mode" принимает множество новых параметров, управляющих форматом вывода. Некоторые из них заменяют настройки, которые раньше задавались отдельными dot-командами. Например, новый параметр "--width" заменяет устаревшую dot-команду ".width". (Устаревшая команда ".width" сохранена для совместимости, но больше не документируется и считается устаревшей.)

  • Режим по умолчанию для интерактивных сеансов изменён на "qbox" с дополнительными параметрами "--quote relaxed", "--limits 5,300,20", "--textjsonb on" и "--sw auto". Для обратной совместимости режим "list" по-прежнему используется по умолчанию в сценариях.

  • Новые режимы "tty" и "batch" устанавливают режим отображения по умолчанию соответственно для интерактивных сеансов и пакетных сеансов.

  • Новый режим "psql" формирует вывод, очень похожий на вывод утилиты командной строки PostgreSQL "psql".

  • Появилось множество новых возможностей форматирования. Подробности приведены ниже.

1.2. Несколько коротких примеров:

Чтобы узнать текущий режим вывода, выполните ".mode" без аргументов.

sqlite> .mode
.mode qbox --limits on --quote relaxed --sw auto --textjsonb on                
sqlite>

Добавьте "-v", чтобы получить больше подробностей:

sqlite> .mode -v
.mode qbox --align "" --border on --blob-quote auto --colsep "" --escape auto  
--limits on --null "NULL" --quote relaxed --rowsep "" --sw auto --tablename "" 
--textjsonb on --titles on --widths "" --wordwrap off
sqlite>

Выполните ".mode --list", чтобы увидеть список всех доступных режимов вывода:

sqlite> .mode --list
available modes: ascii box c column count csv html insert jatom jobject json   
line list markdown off psql qbox quote table tabs tcl batch tty
sqlite>

Переключитесь в режим "column" без ограничений на длину отдельных полей, но с уменьшением ширины всех столбцов так, чтобы таблица помещалась на экране.

sqlite> .mode column -limits off -sw auto                                      

Настройте отображение в виде ASCII-рамок (как в MySQL), с не заключённым в кавычки текстом, значениями NULL, отображаемыми как "NULL", значениями BLOB в шестнадцатеричном виде и ограничением длины, позволяющим показывать только первые 10 строк или первые 1000 символов каждого значения.

sqlite> .mode table -quote off -null NULL -blob hex -limits 10,1000            

Используйте режим разделения по столбцам ("split"), но только для одного входного SQL-запроса (благодаря параметру "--once").

sqlite> .mode --once split
sqlite> SELECT name FROM pragma_function_list
   ...> WHERE name GLOB 'json_*'
   ...> ORDER BY name;
json_array           json_group_array   json_patch   json_replace  json_valid  
json_array_length    json_group_object  json_pretty  json_set
json_array_length    json_insert        json_pretty  json_type
json_error_position  json_object        json_quote   json_type
json_extract         json_parse         json_remove  json_valid
sqlite3>

Выведите подсказки по использованию команды ".mode":

sqlite> .help mode                                                             

2. Форматы вывода по умолчанию

Начиная с версии 3.52.0 (2026-03-06), формат по умолчанию следующий:

  • Результаты запросов выводятся в таблице, составленной из символов Unicode для рисования рамок. ("box")
  • Весь вывод заключён в кавычки как SQL-литералы, за исключением текстовых литералов, которые не требуется заключать в кавычки для устранения неоднозначности. ("--quote relaxed")
  • Предпринимается попытка автоматически сжать таблицу вывода, чтобы она поместилась в ширину экрана. ("--screenwidth auto")
  • Многострочные значения усекаются: отображаются только первые 5 строк. ("--linelimit 5")
  • Длинные значения усекаются: отображаются только первые 300 символов. ("--charlimit 300")
  • Заголовки столбцов усекаются до 20 символов. (--titlelimit 20)
  • Если отображаемое значение BLOB на самом деле является JSONB, вместо значения BLOB показывается соответствующий ему текст JSON. ("--textjsonb on")

Указанные выше настройки используются по умолчанию, когда CLI подключён к терминалу или консольному окну. При запуске в качестве пакетного сценария (когда стандартный ввод и стандартный вывод подключены к файлу или каналу, а не к клавиатуре или терминалу) применяется тот же формат, что и в SQLite версии 3.51.0 и более ранних:

  • Значения отображаются в том виде, в каком они хранятся в базе данных, без кавычек.
  • Все столбцы каждой строки выводятся в одной строке и разделяются символом "|".
  • Строки завершаются символом новой строки (U+000a).
  • Длина результирующих значений и строк вывода не ограничена.

Этот режим "batch" предназначен для обратной совместимости. Принудительно включить пакетный режим можно, запустив CLI с параметром командной строки "--batch" или выполнив dot-команду ".mode batch".

Чтобы узнать текущую конфигурацию CLI для отображения результатов, выполните команду ".mode" без аргументов или запустите ".mode -v", чтобы получить более подробную информацию.

3. Изменение форматов вывода

Существует множество различных режимов вывода. Режим по умолчанию для терминалов, в котором отдельные значения заключаются в кавычки, а весь результат отображается в виде матрицы из символов Unicode для рисования рамок, называется "qbox". Режим по умолчанию для пакетного режима называется "list". Полный список всех доступных режимов можно получить, выполнив команду ".mode --list"

Чтобы изменить режим вывода, выполните команду вида ".mode NAME", где NAME — один из встроенных режимов, перечисленных в выводе команды ".mode --list". Кроме того, доступно множество параметров для точной настройки отображения результатов. Многие из них можно определить, изучив вывод команды ".mode -v".

3.1. Режим вывода "list"

Режимом вывода по умолчанию для сценариев (а также для всех экземпляров CLI до версии 3.52.0) является "list". В режиме list каждая строка результата запроса записывается в отдельную строку вывода, а столбцы в этой строке разделяются заданной строкой-разделителем. Разделитель по умолчанию — вертикальная черта ("|"). Режим list особенно полезен, если вы собираетесь передать вывод запроса другой программе (например, AWK) для дальнейшей обработки.

sqlite> .mode list
sqlite> CREATE TABLE tbl1(one,two);
sqlite> INSERT INTO tbl1 VALUES('hello!',10),('goodbye',20);
sqlite> SELECT * FROM tbl1;
hello!|10
goodbye|20
sqlite>

Используйте параметр "--colsep STRING" команды ".mode", чтобы выбрать другую строку-разделитель столбцов. Например, чтобы задать в качестве разделителя запятую и пробел, выполните:

sqlite> .mode list --colsep ", "
sqlite> select * from tbl1;
hello!, 10
goodbye, 20
sqlite>

При переключении в другой режим разделитель столбцов и другие настройки могут сброситься до значений по умолчанию для нового режима. Поэтому при смене режимов может потребоваться повторно указывать параметр "--colsep", если вы хотите продолжить использовать нестандартный разделитель.

3.2. Режим вывода "quote"

В режиме "quote" вывод форматируется как SQL-литералы. Строки заключаются в одинарные кавычки, а внутренние одинарные кавычки экранируются удвоением. Двоичные объекты отображаются в шестнадцатеричной записи BLOB-литерала (например: x'abcd'). Числа отображаются как текст ASCII, а значения NULL — как "NULL". Столбцы разделяются запятыми.

sqlite> .mode quote
sqlite> select * from tbl1;
'hello!',10
'goodbye',20
sqlite>

Режим quote фактически является псевдонимом режима list с изменёнными настройками. Следующие две команды .mode дают одинаковый результат:

sqlite> .mode quote
sqlite> .mode list -quote on -colsep ","

3.3. Другие режимы вывода, похожие на list

Некоторые режимы вывода являются удобными псевдонимами режима "list" с другими значениями параметров "--quote", "--colsep", "--rowsep" и "--null". Ниже приведён полный список:

Режим --quote --colsep --rowsep --null
ascii csv "\037" "\036" ""
c tcl , "\n" NULL
csv csv , "\r\n" ""
jatom json , "\n" null
list off | "\n" ""
quote on , "\n" NULL
tables csv "\t" "\n" ""
tcl tcl , "\n" ""

3.4. Режим вывода "line"

В режиме "line" каждый столбец строки базы данных выводится на отдельной строке. Каждая строка состоит из имени столбца, двоеточия и данных столбца. Последующие записи разделяются пустой строкой. Пример вывода в режиме line:

sqlite> .mode line
sqlite> select * from tbl1;
one: hello!
two: 10

one: goodbye
two: 20
sqlite>

Режим "line" особенно полезен при отображении результатов с большим количеством столбцов, слишком большим для размещения в одной строке экрана. Режим line предотвращает выход строк за пределы экрана и тем самым делает вывод более удобным для чтения.

До версии 3.52.0 в качестве разделителя использовался знак равенства, а не двоеточие. Иными словами, первая строка приведённого выше примера раньше выглядела как "one = hello!", а не "one: hello!". Чтобы восстановить форматирование до версии 3.52.0, используйте параметр "--colsep TEXT" команды ".mode", где TEXT — нужный разделитель. Поэтому для получения прежнего формата выполните:

sqlite> .mode line --colsep " = "

3.5. Табличные режимы вывода

В табличных режимах каждая запись выводится на отдельной строке, а данные выравниваются по столбцам. Пример такого режима — "column":

sqlite> .mode column
sqlite> select * from tbl1;
one       two
--------  ---
hello!    10
goodbye   20
sqlite>

В режимах "column" (а также "box", "psql", "qbox", "table" и "markdown") ширина столбцов настраивается автоматически. Это можно переопределить, задав ширину каждого столбца с помощью параметра "--width" команды ".mode". Аргумент "--width" — это список целых чисел, разделённых пробелами или запятыми, задающих количество символов, отводимых каждому столбцу. Отрицательные числа означают выравнивание по правому краю. Значение 0 означает, что ширина столбца подбирается автоматически по его содержимому. Значение "--width" по умолчанию равно 0; 0 также используется по умолчанию для всех столбцов справа от тех, ширина которых указана с помощью "--width". Таким образом:

sqlite> .mode --width 12,-6
sqlite> select * from tbl1;
one              two
------------  ------
hello!            10
goodbye           20
sqlite>

Команда ".mode --width 0" сбрасывает ширину всех столбцов до нуля, в результате чего она определяется автоматически.

Примеры других табличных режимов:

sqlite> .mode box --widths 0
sqlite> select * from tbl1;
╭─────────┬─────╮
│   one   │ two │
╞═════════╪═════╡
│ hello!  │  10 │
│ goodbye │  20 │
╰─────────┴─────╯
sqlite> .mode markdown
sqlite> select * from tbl1;
|   one   | two |
|---------|-----|
| hello!  | 10  |
| goodbye | 20  |
sqlite> .mode psql
sqlite> select * from tbl1;
   one   | two
---------+-----
 hello!  |  10
 goodbye |  20
sqlite> .mode qbox
sqlite> select * from tbl1;
╭───────────┬─────╮
│    one    │ two │
╞═══════════╪═════╡
│ 'hello!'  │  10 │
│ 'goodbye' │  20 │
╰───────────┴─────╯
sqlite> .mode table
sqlite> select * from tbl1;
+---------+-----+
|   one   | two |
+---------+-----+
| hello!  | 10  |
| goodbye | 20  |
+---------+-----+
sqlite>

Режим "qbox" — это просто удобный вариант режима "box", который автоматически включает "--quote on". Аналогично, "psql" (названный так потому, что форматирует результаты аналогично утилите командной строки PostgreSQL "psql") — это режим "table" с добавленным параметром "--border off".

3.6. Перенос строк

Табличные режимы поддерживают дополнительные параметры форматирования. Параметр "--wrap N" (где N — целое число) переносит текст в столбцах, если его длина превышает N символов. Если N равно нулю, перенос отключается.

sqlite> insert into tbl1 values('The quick fox jumps over a lazy brown dog.',90);
sqlite> .mode box --wrap 30
sqlite> select * from tbl1 where two>50;
╭────────────────────────────────┬─────╮
│              one               │ two │
╞════════════════════════════════╪═════╡
│ The quick fox jumps over a laz │  90 │
│ y brown dog.                   │     │
╰────────────────────────────────┴─────╯
sqlite>

Перенос выполняется ровно после N символов, поэтому он может произойти посреди слова. Чтобы перенос выполнялся по границе слова, добавьте параметр "--wordwrap on" (или краткую форму "-ww"):

sqlite> .mode box --wrap 30 -ww
sqlite> select * from tbl1 where two>50;
╭────────────────────────────────┬─────╮
│              one               │ two │
╞════════════════════════════════╪═════╡
│ The quick fox jumps over a     │  90 │
│ lazy brown dog.                │     │
╰────────────────────────────────┴─────╯
sqlite>

Команда ".mode box --wrap 60 --quote on" настолько полезна для запросов к базам данных общего назначения, что для неё предусмотрен отдельный псевдоним. Вместо того чтобы вводить всю эту 30-символьную команду, можно просто выполнить ".mode qbox".

3.7. Режим вывода "insert"

Ещё один полезный режим вывода — "insert". В этом режиме вывод форматируется в виде SQL-операторов INSERT. Используйте его, чтобы сгенерировать текст, который впоследствии можно использовать для ввода данных в другую базу данных.

При указании режима insert необходимо передать дополнительный аргумент — имя таблицы, в которую нужно вставить данные. Например:

sqlite> .mode insert new_table
sqlite> select * from tbl1 where two<50;
INSERT INTO new_table VALUES('hello',10),
  ('goodbye',20);
sqlite>

Дополнительные строки будут добавляться к INSERT-оператору в виде новых кортежей, пока размер INSERT-оператора (в байтах) не превысит значение параметра "--multiinsert" (по умолчанию: 3000). Чтобы каждая строка выводилась в отдельном INSERT-операторе, задайте --multiinsert равным 0.

Если параметр --titles on указан в команде .mode, вывод INSERT будет включать список имён столбцов:

sqlite> .mode insert mytable --titles on
sqlite> select 1 a, 2 b, 3 c;
INSERT INTO mytable(a,b,c) VALUES(1,2,3);
sqlite>

3.8. Режим вывода "split"

Режим вывода с разделением по столбцам, называемый "split" и запускаемый командой ".mode split", представляет собой особый вариант табличного режима "column". Режим "split" работает только с запросами, возвращающими один столбец, и только когда параметр "--screenwidth" не равен "off". Вместо отображения результатов в одном вертикальном столбце режим "split" пытается распределить этот столбец по вертикали так, чтобы в итоговом выводе было два или более столбцов. CLI создаёт столько столбцов, сколько помещается на экране.

В следующем примере показано, как использовать режим "split" для вывода всех встроенных SQL-функций, имена которых начинаются с "c", на экране шириной 55 символов:

sqlite> .mode --once split --sw 55
sqlite> SELECT name FROM pragma_function_list
   ...> WHERE name GLOB 'c*'
   ...> ORDER BY name;
ceil       coalesce     cosh         current_date
ceiling    concat       count        current_time
changes    concat_ws    count        current_timestamp
char       cos          cume_dist
sqlite3>

CLI использует режим "split" внутри программы, чтобы реализовать такие dot-команды, как .tables

3.9. Режимы вывода "count" и "off"

Режимы вывода "count" и "off" не показывают сами результаты запросов. Вместо этого они отображают только количество строк результата или вообще ничего соответственно. Эти режимы полезны для выполнения тестов производительности запросов, создающих большой объём вывода, когда важно не содержимое вывода, а только время его вычисления.

3.10. Режимы вывода "batch" и "tty"

Два псевдонима, "batch" и "tty", обозначают режимы вывода по умолчанию соответственно при запуске CLI как сценария ("batch") и из терминала или консоли ("tty").

3.11. Пользовательские режимы вывода

Параметр "--tag" позволяет определять и именовать новые пользовательские режимы вывода. Аргумент --tag — это имя нового режима. Все настройки, заданные до --tag, сохраняются под этим именем, и позднее их можно восстановить с помощью ".mode TAGNAME".

4. Экранирование управляющих символов

По умолчанию (начиная с версии 3.50.0) CLI не отображает большинство управляющих символов в диапазоне от U+0001 до U+001f, даже если такие символы содержатся в строках, которые CLI выводит. Это сделано для предотвращения проблем при просмотре вывода на устройстве, интерпретирующем управляющие последовательности ANSI. CLI скрывает большинство управляющих символов, но делает следующие исключения: TAB (0x09), LF (0x0a) и CRLF (0x0d,0x0a). Эти символы передаются в вывод без изменений.

По умолчанию CLI отображает большинство управляющих символов так же, как команда "cat -A" в Linux: для управляющего символа X выводятся два символа "^Y", где Y — это X+0x40. Например, символ "ESC" (0x1b) отображается как "^[" , а символ возврата на одну позицию (0x08) — как "^H".

Отображение управляющих символов задаётся параметром командной строки "--escape T" для CLI или dot-командой ".mode", где T — алгоритм обработки управляющих символов. Значение T по умолчанию — "ascii". Если изменить его на "--escape symbol", управляющие символы будут преобразованы в печатные символы Unicode в диапазоне от U+2401 до U+241f. Например, ESC отображается как "␛", а возврат на одну позицию — как "␈". Параметр "--escape off" отключает преобразование управляющих символов, поэтому CLI выводит символы в точности в том виде, в каком они хранятся в базе данных.

5. Концы строк

В Windows по умолчанию в качестве конца строки может использоваться "\r\n" (CRLF) или "\n" (NL). Хотя это тесно связано с форматированием вывода, выбор окончания строки управляется отдельной подсистемой реализации CLI и поэтому имеет собственную dot-команду ".crlf", независимую от ".mode".

Используйте ".crlf on", чтобы установить окончание строки CRLF, и ".crlf off" — для NL. По традиции в Windows по умолчанию используется CRLF. Однако из-за добавления символов "\r" некоторый вывод отличается от вывода на платформах, отличных от Windows. Чтобы обеспечить в Windows вывод результатов, идентичный выводу на всех остальных системах, выполните ".crlf off".

На платформах, отличных от Windows, команда ".crlf" ничего не делает, а режим crlf всегда равен "off". Для вывода CSV окончание строки всегда равно "\r\n" независимо от настройки .crlf, поскольку этого требует RFC-4180.

6. Подробно о синтаксисе и параметрах .mode

Команда mode обрабатывает аргументы слева направо. Порядок может иметь значение. Например, настройки слева от параметра "--reset", скорее всего, будут отменены, поскольку сброс выполняется после этих настроек. Настройки справа сохранятся, поскольку они применяются после сброса.

Выполните ".help mode", чтобы получить краткое описание параметров команды ".mode". Подробности приведены ниже.

6.1. --align STRING

Значение выравнивания — это строка из символов 'L', 'C' и 'R', определяющих выравнивание текста в табличных режимах. 'L' означает выравнивание по левому краю (значение по умолчанию), 'C' — по центру, 'R' — по правому краю. Каждая буква строки соответствует одному столбцу табличного вывода. Если столбцов в выводе больше, чем букв в строке выравнивания, остальные столбцы выравниваются по левому краю.

6.2. --blob-quote ARG

Параметр --blob-quote (который можно сокращать до "--blob") задаёт способ отображения значений BLOB. Аргументом может быть одно из значений: "auto", "text", "sql", "hex", "tcl", "json" или "size".

Значение --blob-quote по умолчанию — "auto": система выбирает подходящий способ отображения значений BLOB на основе текущего режима и/или текущей настройки "--quote". Значение по умолчанию "auto" лучше всего подходит для большинства ситуаций.

Если ARG равно "text", байты значения BLOB интерпретируются как текст UTF-8 и отображаются как текст. Значение "sql" означает, что BLOB отображается как SQL-литерал BLOB. Значение "hex" означает, что BLOB выводится в шестнадцатеричном виде. Значение "tcl" означает, что BLOB отображается как строка в двойных кавычках, где каждый байт представлен в традиционной восьмеричной нотации с обратной косой чертой, используемой в языке C. Например, значение BLOB x'424c4f42' будет отображаться как "\102\114\117\102". Кодировка "json" похожа, но отдельные байты используют экранирование JSON: "\u0042\u004c\u004f\u0042". Кодировка "size" вообще не пытается отображать содержимое BLOB, а выводит только его размер в виде текста, например: (482-byte blob)

6.3. --charlimit N

Ограничивает количество символов, отображаемых для одного значения в выводе. Если длина выводимого текста превышает N символов, он усекается, а в конце добавляется многоточие. Если N равно нулю, ограничение на количество символов отключается.

Ограничение на количество символов действует во всех режимах вывода.

См. также параметр "--linelimit", параметр "--limits" и параметр "--titlelimit".

6.4. --border auto|off|on

Настройка --border определяет, отображается ли рамка вокруг всего результата или только внутренние разделительные линии. Эта настройка влияет только на режимы "box" и "table". Если значение настройки равно "off", рамка не отображается. В противном случае рамка отображается. По умолчанию внешняя рамка отображается. Режим "psql" является псевдонимом режима "table" с настройкой --border, равной "off".

6.5. --colsep STRING

Задаёт STRING в качестве разделителя столбцов. Используйте двойные кавычки и экранирование обратной косой чертой, чтобы включить в разделитель столбцов пробелы и специальные символы, например табуляцию (\t).

6.6. --escape ESC

Управляет экранированием управляющих символов во всём выводе. Допустимые значения ESC: "off", "ascii" и "symbol". Рекомендуется использовать значение "ascii", установленное по умолчанию.

6.7. --linelimit N

Ограничивает отображение первых N строк текста для любого отдельного значения. Строки могут разделяться из-за символов новой строки (U+000a) в тексте или из-за переноса столбцов. В любом случае этот параметр показывает первые N строк, а для строки N+1 выводит многоточие. Установите N равным нулю, чтобы отключить ограничение количества строк.

Ограничение количества строк действует только в табличных режимах и в режиме "line". Во всех остальных режимах оно игнорируется.

См. также параметр "--charlimit", параметр "--limits" и параметр "--titlelimit"

6.8. --limits L,C,T

Этот параметр является сокращённой записью для "--linelimit L --charlimit C --titlelimit&nbspT". Иными словами, если аргумент состоит из трёх целых чисел L, C и T, разделённых запятыми, то ограничения на количество строк, количество символов и длину заголовка устанавливаются соответственно в L, C и T. Если ",T" опущено, изменяются только ограничения на количество строк и символов, а ограничение длины заголовка остаётся без изменений. Аргументом --limits также может быть "off" — псевдоним значения "0,0,0", или "on", устанавливающее все ограничения в разумные встроенные значения по умолчанию.

6.9. --list

Параметр "--list" не принимает аргументов. Он заставляет команду ".mode" вывести список всех доступных режимов, включая пользовательские режимы, созданные с помощью параметра "--tag".

6.10. --multiinsert N

Настройка --multiinsert влияет на вывод в режиме "insert". Аргумент N определяет, сколько строк результата включается в каждый INSERT-оператор. Если N положительно, несколько строк добавляются в INSERT-оператор в виде дополнительных кортежей, пока общий размер INSERT-оператора не превысит N байт. Последующие строки будут включены в новый INSERT-оператор.

Установка --multiinsert в значение от двух до трёх тысяч может сделать вывод ".mode insert" более удобным для чтения, а также ускорить его разбор при переносе содержимого в другую СУБД.

6.11. --null STRING

Аргумент STRING задаёт текст, который CLI будет отображать для значений NULL. Обычно используют пустую строку (её необходимо заключить в ""), "null" и "NULL".

6.12. --once

Параметр "--once" означает, что все изменения настроек справа от него являются временными и будут отменены после выполнения следующего SQL-оператора.

В предыдущем предложении под «следующим SQL-оператором» подразумеваются все SQL-операторы вплоть до следующей полной строки SQL-ввода включительно, заканчивающейся точкой с запятой. Если в одной входной строке находятся два или более SQL-запроса, все они будут выполнены до сброса режима. Поэтому, если вы, например, выполните ".mode --once split", а затем введёте в следующей строке ввода два оператора SELECT, оба они будут обработаны в режиме "split".

6.13. --quote ARG

Параметр --quote определяет, как текстовые значения заключаются в кавычки перед отображением. Возможные аргументы: "off", "on", "sql", "relaxed", "csv", "html", "tcl" и "json".

Если для --quote задано значение "off", текст отображается так, как он представлен в базе данных, без экранирования.

Значение "sql" для --quote означает, что текст выводится как SQL-текстовый литерал в одинарных кавычках. Значение "relaxed" действует аналогично, но старается не добавлять дополнительные конструкции кавычек в случаях, когда они не нужны. Значение "csv" означает, что текст заключается в кавычки согласно правилам для файлов CSV, указанным в RFC-4180. Значение "html" означает экранирование текста для отображения в HTML, например символы "<" выводятся как "&lt;" и так далее. Значение "tcl" означает, что текст заключается в двойные кавычки и экранируется обратной косой чертой, как в TCL, C, Perl и других распространённых языках программирования. Значение "json" похоже на "tcl", но использует только экранирование обратной косой чертой, допустимое в JSON.

Значение "on" похоже на "sql", но также изменяет параметр "--null" на "NULL".

6.14. --reset

Параметр --reset не меняет текущий режим, но сбрасывает все остальные настройки (--colsep, --null, --rowsep и так далее) до значений по умолчанию для этого режима.

6.15. --rowsep STRING

Использует STRING в качестве разделителя строк.

6.16. --screenwidth N

Эта настройка сообщает CLI, что ширина устройства отображения составляет N символов. Затем CLI пытается сжать вывод в табличном режиме и режиме "line", чтобы он помещался в указанную ширину. Если аргумент равен 0 или "off", ширина экрана игнорируется и попытки сжать результаты до определённой ширины не предпринимаются.

Значение по умолчанию — "auto": перед выполнением каждого запроса CLI определяет фактическую ширину устройства отображения. При значении "auto", если CLI запущен в терминале или консольном окне и вы увеличиваете ширину окна, настройка ширины экрана изменяется автоматически.

Настройка "--sw N" является сокращённой записью для "--screenwidth N".

Ширина экрана используется только в табличных режимах и построчном режиме. Ограничение ширины экрана действует «по мере возможности»: CLI старается уместить вывод в указанную ширину, но может превысить её, если иначе не обойтись. Например, если --screenwidth равен 40, а вы пытаетесь вывести результат с 50 разными столбцами, очевидно, что уместить его не получится, и ширина экрана будет превышена.

6.17. --tablename NAME

Используйте «NAME» в качестве имени таблицы, в которую нужно вставить данные в режиме «insert».

6.18. --tag NAME

Эта опция создаёт новый режим с именем NAME. После использования этой метки можно ввести «.mode NAME», чтобы восстановить все настройки режима, действовавшие при первом выполнении опции --tag.

Здесь важен порядок опций. Новый режим будет включать все настройки режима, действующие в момент обработки опции «--tag». Поэтому изменения, указанные до «--tag», войдут в новый режим, а изменения после «--tag» — нет.

6.19. --textjsonb BOOLEAN

Если включена опция --testjsonb, то при отображении значения BLOB CLI сначала проверяет, действительно ли оно представляет собой JSONB-объект BLOB. Если это так, CLI отображает соответствующий текст JSONB, используя способ экранирования, указанный в опции «--quote». Если отображаемый BLOB не является JSONB, он выводится с использованием текущей опции «--blob-quote».

6.20. --title ARG

Опция --title определяет, нужно ли выводить заголовки столбцов и, если нужно, какую кодировку текста для них использовать. ARG может принимать значения «off», «on», «sql», «csv», «html», «tcl» или «json».

6.21. --titlelimit N

Опция --titlelimit задаёт максимальную ширину заголовков столбцов в табличном и построчном режимах. (В настоящее время --titlelimit не влияет на другие режимы, но это может измениться в будущих выпусках.) Если заголовок столбца длиннее указанного числа символов, он обрезается. Кроме того, символы новой строки и табуляции в заголовке заменяются обычными пробелами.

Функция --titlelimit полезна для ограничения чрезмерно длинных заголовков столбцов при выполнении запросов, в которых в качестве столбцов результата используются подзапросы или сложные выражения. Если не указать предложение AS, заголовками таких столбцов по умолчанию становятся полные тексты подзапросов или выражений. Это может привести к неудобному выводу в табличном и/или построчном режиме. Если задать для --titlelimit положительное число (обычно от 10 до 20), вывод станет более удобочитаемым. Если --titlelimit равен нулю, длина заголовков не ограничивается.

См. также опцию «--charlimit», опцию «--linelimit» и опцию «--limits».

6.22. --verbose

Если эта опция включена, при отображении текущего режима и настроек показываются все возможные параметры, в том числе те, которые сейчас имеют значения по умолчанию.

Опция «-v» — это сокращённая форма «--verbose».

6.23. --widths LIST

Задаёт ширину столбцов в табличных режимах. Аргумент — список целых чисел, по одному для каждого столбца. Ширина «0» означает, что ширина будет динамически определяться по фактической ширине данных. Если в LIST элементов меньше, чем столбцов, для неуказанной ширины используется «0».

6.24. --wordwrap BOOLEAN

Когда опция «--wrap» требует переноса длинного текста, эта опция определяет, будет ли перенос выполняться на границе слова или внутри слова. Значение true означает, что CLI попытается найти подходящую границу слова для переноса.

Для очень длинных слов подходящую границу может найти не удастся, и в таком случае перенос всё же может произойти внутри слова.

6.25. --wrap N

В табличных режимах эта настройка не позволяет ширине какого-либо столбца превышать N символов. Если выводимый текст длиннее N символов, он переносится. Значение N, равное 0, означает отсутствие ограничения: ширина столбцов таблицы может быть достаточной для размещения текста.

6.26. --ww

Опция «--ww», не принимающая аргументов, — это просто сокращённая запись «--wordwrap on».

Последнее обновление этой страницы: 2026-03-21 20:08:30Z

SQLite is in the Public Domain.
https://sqlite.org/climode.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API