| Entrée | Sortie | Alias |
|---|---|---|
| ✔ | ✔ |
Description
Le format Values affiche chaque ligne entre parenthèses.
- Les lignes sont séparées par des virgules, sans virgule après la dernière.
- Les valeurs à l’intérieur des parenthèses sont elles aussi séparées par des virgules.
- Les nombres sont affichés au format décimal, sans guillemets.
- Les tableaux sont affichés dans
[]. - Les chaînes, les dates et les dates avec heure sont affichées entre guillemets.
- Les règles d’échappement et l’analyse sont similaires à celles du format TabSeparated.
Lors du formatage, aucun espace supplémentaire n’est inséré, mais lors de l’analyse, les espaces sont autorisés et ignorés (sauf à l’intérieur des valeurs de tableau, où ils ne sont pas autorisés).
NULL est représenté par NULL.
Jeu minimal de caractères à échapper lors de la transmission de données au format Values :
- apostrophes
- barres obliques inverses
C’est le format utilisé dans INSERT INTO t VALUES ..., mais vous pouvez également l’utiliser pour le formatage du résultat de la requête.
Exemple d’utilisation
Insertion de données
Le format Values est celui utilisé par INSERT, donc toute instruction INSERT ... VALUES
l'utilise déjà. La clause FORMAT Values peut être indiquée explicitement, et les
lignes peuvent être fournies à partir d'un flux ou d'un fichier. Chaque ligne est un tuple
entre parenthèses, dont les éléments sont séparés par des virgules, les tuples eux-mêmes
étant séparés par des virgules :
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] │
└────┴──────┴─────────┘Utilisation des expressions en entrée
Contrairement à la plupart des formats d’entrée, Values peut évaluer des expressions SQL dans chaque champ,
au lieu d’accepter uniquement des littéraux. Ce comportement est contrôlé par
input_format_values_interpret_expressions (activé par
défaut) : lorsqu’un champ ne peut pas être lu par le parseur de streaming rapide, ClickHouse
bascule vers le parseur SQL et interprète le champ comme une expression.
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 │
└───────┴───────┘Sélection des données
Le format Values peut également être utilisé pour formater les résultats de la requête. Les nombres sont
écrits sans guillemets, les tableaux entre [], et les chaînes ainsi que les dates entre apostrophes simples ;
les apostrophes et les barres obliques inverses à l’intérieur des chaînes sont précédées d’une barre oblique inverse, et
NULL s’écrit NULL :
SELECT 1 AS a, 'O''Reilly' AS b, NULL::Nullable(String) AS c FORMAT Values;(1,'O\'Reilly',NULL)Paramètres de format
| Paramètre | Description | Par défaut |
|---|---|---|
input_format_values_interpret_expressions |
si le champ n’a pas pu être analysé par le parseur de streaming, exécuter le parseur SQL et essayer de l’interpréter comme une expression SQL. | true |
input_format_values_deduce_templates_of_expressions |
si le champ n’a pas pu être analysé par le parseur de streaming, exécuter le parseur SQL, déduire le modèle de l’expression SQL, essayer d’analyser toutes les lignes à l’aide de ce modèle, puis interpréter l’expression pour toutes les lignes. | true |
input_format_values_accurate_types_of_literals |
lors de l’analyse et de l’interprétation d’expressions à l’aide d’un modèle, vérifier le type réel du littéral afin d’éviter d’éventuels problèmes de dépassement de capacité et de précision. | true |