Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Values

Entrada Saída Alias

Descrição

O formato Values imprime cada linha entre colchetes.

  • As linhas são separadas por vírgulas, sem vírgula após a última linha.
  • Os valores dentro dos colchetes também são separados por vírgulas.
  • Os números são exibidos em formato decimal, sem aspas.
  • Arrays são exibidos em [].
  • Strings, datas e valores de data e hora são exibidos entre aspas.
  • As regras de escape e parsing são semelhantes às do formato TabSeparated.

Durante a formatação, espaços extras não são inseridos, mas, durante o parsing, eles são permitidos e ignorados (exceto espaços dentro de valores de array, que não são permitidos). NULL é representado como NULL.

O conjunto mínimo de caracteres que você precisa escapar ao passar dados no formato Values:

  • aspas simples
  • barras invertidas

Este é o formato usado em INSERT INTO t VALUES ..., mas você também pode usá-lo para formatar resultados de consulta.

Exemplo de uso

Inserindo dados

O formato Values é o usado por INSERT, então qualquer instrução INSERT ... VALUES já o utiliza. A cláusula FORMAT Values pode ser especificada explicitamente, e as linhas podem ser fornecidas por um fluxo ou por um arquivo. Cada linha é uma tupla entre parênteses, com os valores separados por vírgulas, e as próprias tuplas também separadas por vírgulas:

Querysql
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;
Responseresponse
┌─id─┬─name─┬─values──┐
│  1 │ a    │ [10,20] │
│  2 │ b    │ [30]    │
└────┴──────┴─────────┘

Usando expressões na entrada

Ao contrário da maioria dos formatos de entrada, Values pode avaliar expressões SQL em cada campo, em vez de aceitar apenas literais. Isso é controlado por input_format_values_interpret_expressions (ativado por padrão): quando um campo não pode ser lido pelo parser rápido de streaming, o ClickHouse recorre ao parser SQL e interpreta o campo como uma expressão.

Querysql
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;
Responseresponse
┌─item──┬─total─┐
│ apple │    12 │
│ pear  │    15 │
└───────┴───────┘

Seleção de dados

O formato Values também pode ser usado para formatar resultados de consulta. Números são escritos sem aspas, arrays em [] e strings e datas entre aspas simples; aspas simples e barras invertidas dentro de strings são escapadas com uma barra invertida, e NULL é escrito como NULL:

Querysql
SELECT 1 AS a, 'O''Reilly' AS b, NULL::Nullable(String) AS c FORMAT Values;
Responseresponse
(1,'O\'Reilly',NULL)

Configurações de formato

Configuração Descrição Padrão
input_format_values_interpret_expressions se o campo não puder ser analisado pelo parser de streaming, execute o parser SQL e tente interpretá-lo como uma expressão SQL. true
input_format_values_deduce_templates_of_expressions se o campo não puder ser analisado pelo parser de streaming, execute o parser SQL, deduza o modelo da expressão SQL, tente analisar todas as linhas usando esse modelo e, em seguida, interprete a expressão para todas as linhas. true
input_format_values_accurate_types_of_literals ao analisar e interpretar expressões usando um modelo, verifique o tipo real do literal para evitar possíveis problemas de overflow e precisão. true
Navigation