Passer au contenu principal
EntréeSortieAlias

Description

HiveText lit le format de sérialisation texte utilisé par les tables Apache Hive (format produit par le LazySimpleSerDe de Hive). Il s’agit d’un format texte délimité, semblable à CSV, dans lequel les champs sont séparés par le délimiteur Hive par défaut \x01 (Ctrl-A). Le délimiteur de champ est configurable via input_format_hive_text_fields_delimiter. HiveText est un format d’entrée uniquement. Les données n’ont pas de ligne d’en-tête : les valeurs sont associées aux colonnes de la table de destination selon leur position, de sorte que les noms et les types des colonnes sont repris de la table (ou d’une structure explicitement fournie) plutôt qu’inférés à partir des données. Lors de la lecture, ClickHouse analyse les dates et heures en mode best-effort (voir date_time_input_format), complète les champs de fin omis avec les valeurs par défaut des colonnes et ignore les champs qu’il ne reconnaît pas. Dans un champ, les valeurs sont analysées à l’aide des mêmes règles d’échappement que CSV, plutôt que des délimiteurs imbriqués de Hive. En particulier, une colonne de type Array est lue à partir de la représentation entre crochets (par exemple, "['a','b','c']"), et non à partir de valeurs séparées par le délimiteur de collection Hive \x02.
Les paramètres de délimiteurs imbriqués n’ont aucun effetLes paramètres input_format_hive_text_collection_items_delimiter et input_format_hive_text_map_keys_delimiter sont acceptés pour des raisons de compatibilité, mais ne sont actuellement pas utilisés lors de l’analyse.
Par défaut, les lignes peuvent contenir un nombre variable de champs (voir input_format_hive_text_allow_variable_number_of_columns) : pour les lignes comportant moins de champs que la table, les colonnes manquantes sont remplies avec des valeurs par défaut, et pour les lignes comportant des champs supplémentaires en fin de ligne, ces champs sont ignorés.

Exemple d’utilisation

Les exemples ci-dessous remplacent le délimiteur de champ par défaut par une virgule (,) à l’aide de input_format_hive_text_fields_delimiter, afin de rendre les fichiers d’entrée plus faciles à lire.

Lecture d’un fichier HiveText

Soit un fichier hive_data.txt avec des champs séparés par des virgules :
hive_data.txt
1,3
3,5,9
Nous créons une table qui définit les noms et les types des colonnes, puis nous y insérons le fichier avec FORMAT HiveText :
Query
CREATE TABLE test_tbl (a UInt16, b UInt32, c UInt32) ENGINE = MergeTree ORDER BY a;

INSERT INTO test_tbl FROM INFILE 'hive_data.txt'
SETTINGS input_format_hive_text_fields_delimiter = ','
FORMAT HiveText;

SELECT * FROM test_tbl;
Response
┌─a─┬─b─┬─c─┐
│ 1 │ 3 │ 0 │
│ 3 │ 5 │ 9 │
└───┴───┴───┘
Notez que la première ligne, 1,3, ne contient que deux champs ; la colonne manquante c est donc renseignée avec sa valeur par défaut 0.

Nombre variable de colonnes

Avec la valeur par défaut input_format_hive_text_allow_variable_number_of_columns = 1, les lignes qui comportent plus de champs que la table n’a de colonnes voient simplement les champs supplémentaires en fin de ligne ignorés :
hive_extras.txt
1,2,3,4,5
6,7,8
Query
CREATE TABLE test_extras (a UInt16, b UInt32, c UInt32) ENGINE = MergeTree ORDER BY a;

INSERT INTO test_extras FROM INFILE 'hive_extras.txt'
SETTINGS input_format_hive_text_fields_delimiter = ','
FORMAT HiveText;

SELECT * FROM test_extras ORDER BY a;
Response
┌─a─┬─b─┬─c─┐
│ 1 │ 2 │ 3 │
│ 6 │ 7 │ 8 │
└───┴───┴───┘
Définir input_format_hive_text_allow_variable_number_of_columns = 0 à la place impose un nombre strict de champs, et une ligne comportant moins de champs que la table déclenche une exception d’analyse.

Paramètres de format

ParamètreDescriptionPar défaut
input_format_hive_text_fields_delimiterDélimiteur entre les champs dans Hive Text File\x01
input_format_hive_text_collection_items_delimiterDélimiteur entre les éléments d’une collection (Array ou Map) dans Hive Text File. Accepté, mais actuellement non utilisé lors de l’analyse.\x02
input_format_hive_text_map_keys_delimiterDélimiteur entre une paire clé/valeur d’une Map dans Hive Text File. Accepté, mais actuellement non utilisé lors de l’analyse.\x03
input_format_hive_text_allow_variable_number_of_columnsIgnore les colonnes supplémentaires dans l’entrée Hive Text (si le fichier comporte plus de colonnes que prévu) et traite les champs manquants comme des valeurs par défaut1
Dernière modification le 25 juin 2026