| 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:
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] │
└────┴──────┴─────────┘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.
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 │
└───────┴───────┘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:
SELECT 1 AS a, 'O''Reilly' AS b, NULL::Nullable(String) AS c FORMAT Values;(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 |