| Ввод | Вывод | Псевдоним |
|---|---|---|
| ✔ | ✔ |
Описание
Формат Values выводит каждую строку в круглых скобках.
- Строки разделяются запятыми, без запятой после последней строки.
- Значения внутри скобок также разделяются запятыми.
- Числа выводятся в десятичном формате без кавычек.
- Массивы выводятся в
[]. - Строки, даты, а также значения даты и времени выводятся в кавычках.
- Правила экранирования и парсинга аналогичны формату TabSeparated.
При форматировании дополнительные пробелы не вставляются, но при парсинге они допустимы и пропускаются (кроме пробелов внутри значений массива, где они не допускаются).
NULL представляется как NULL.
Минимальный набор символов, которые нужно экранировать при передаче данных в формате Values:
- одинарные кавычки
- обратные косые черты
Это формат, используемый в INSERT INTO t VALUES ..., но его также можно применять для форматирования результатов запроса.
Пример использования
Вставка данных
Формат Values используется оператором INSERT, поэтому любой оператор INSERT ... VALUES
уже работает с ним. Предложение FORMAT Values можно указать явно, а
строки можно передавать из потока или файла. Каждая строка представляет собой кортеж в скобках,
элементы которого разделены запятыми, а сами кортежи также разделяются запятыми:
CREATE TABLE t (id UInt32, name String, values Array(UInt32)) ENGINE = Memory;
INSERT INTO t FORMAT Values (1, 'a', [10, 20]), (2, 'b', [30]);
SELECT * FROM t ORDER BY id;┌─id─┬─name─┬─values──┐
│ 1 │ a │ [10,20] │
│ 2 │ b │ [30] │
└────┴──────┴─────────┘Использование выражений во входных данных
В отличие от большинства входных форматов, Values может вычислять SQL-выражения в каждом поле,
а не только принимать литералы. Это поведение контролируется
input_format_values_interpret_expressions (включено по
умолчанию): если поле не удается прочитать быстрым стриминговым парсером, ClickHouse
переключается на SQL-парсер и интерпретирует это поле как выражение.
CREATE TABLE prices (item String, total UInt32) ENGINE = Memory;
INSERT INTO prices FORMAT Values ('apple', 3 * 4), ('pear', length('hello') + 10);
SELECT * FROM prices ORDER BY total;┌─item──┬─total─┐
│ apple │ 12 │
│ pear │ 15 │
└───────┴───────┘Выборка данных
Формат Values также можно использовать для вывода результатов запроса. Числа
записываются без кавычек, массивы — в [], а строки и даты — в одинарных кавычках;
одинарные кавычки и обратные косые черты внутри строк экранируются обратной косой чертой, а
NULL записывается как NULL:
SELECT 1 AS a, 'O''Reilly' AS b, NULL::Nullable(String) AS c FORMAT Values;(1,'O\'Reilly',NULL)Настройки формата
| Настройка | Описание | По умолчанию |
|---|---|---|
input_format_values_interpret_expressions |
если поле не удалось разобрать с помощью стримингового парсера, запустить SQL-парсер и попытаться интерпретировать его как SQL-выражение. | true |
input_format_values_deduce_templates_of_expressions |
если поле не удалось разобрать с помощью стримингового парсера, запустить SQL-парсер, определить шаблон SQL-выражения, попытаться разобрать по этому шаблону все строки, а затем интерпретировать выражение для всех строк. | true |
input_format_values_accurate_types_of_literals |
при разборе и интерпретации выражений с использованием шаблона проверять фактический тип литерала, чтобы избежать возможных проблем с переполнением и потерей точности. | true |