Passer au contenu principal

Fonction de table file

Un moteur de table qui fournit une interface de type table pour effectuer des SELECT à partir de fichiers et des INSERT dans des fichiers, à l’instar de la fonction de table s3. Utilisez file lorsque vous travaillez avec des fichiers locaux, et s3 lorsque vous travaillez avec des buckets dans un stockage d’objets tel que S3, GCS ou MinIO. La fonction file peut être utilisée dans des requêtes SELECT et INSERT pour lire des fichiers ou y écrire.

Syntaxe

Pour les requêtes SELECT, path peut aussi être une expression qui renvoie un Array(String) :

Arguments

Lorsque l’argument structure est omis, ClickHouse déduit le schéma du format lui-même. Les différents formats produisent des noms et des types de colonnes par défaut différents. Pour afficher le schéma d’un format donné, utilisez DESC avec la fonction de table format.Par exemple :

Valeur retournée

Une table permettant de lire ou d’écrire des données dans un fichier.

Exemples d’écriture dans un fichier

Écrire dans un fichier TSV

Par conséquent, les données sont enregistrées dans le fichier test.tsv :

Écriture partitionnée dans plusieurs fichiers TSV

Si vous spécifiez une expression PARTITION BY lors de l’insertion de données dans une fonction de table de type file, un fichier distinct est créé pour chaque partition. Répartir les données dans des fichiers distincts permet d’améliorer les performances des opérations de lecture.
Par conséquent, les données sont écrites dans trois fichiers : test_1.tsv, test_2.tsv et test_3.tsv.

Exemples de lecture depuis un fichier

SELECT depuis un fichier CSV

Commencez par définir user_files_path dans la configuration du serveur et préparez un fichier test.csv :
Ensuite, chargez les données de test.csv dans une table, puis sélectionnez ses deux premières lignes :

Insérer des données d’un fichier dans une table

Lecture des données à partir de table.csv, situé dans archive1.zip ou/et archive2.zip :

Globs dans le chemin

Les chemins peuvent utiliser des globs. Les fichiers doivent correspondre à l’intégralité du motif de chemin, et pas seulement au suffixe ou au préfixe. Il existe une exception : si le chemin fait référence à un répertoire existant et n’utilise pas de globs, un * sera implicitement ajouté au chemin afin que tous les fichiers du répertoire soient sélectionnés.
  • * — Représente un nombre arbitraire de caractères, sauf /, y compris la chaîne vide.
  • ? — Représente un caractère arbitraire unique.
  • {some_string,another_string,yet_another_one} — Remplace par l’une des chaînes 'some_string', 'another_string', 'yet_another_one'. Les chaînes peuvent contenir le symbole /.
  • {N..M} — Représente tout nombre >= N et <= M.
  • ** - Représente récursivement tous les fichiers à l’intérieur d’un répertoire.
Les constructions avec {} sont similaires aux fonctions de table remote et hdfs.

Exemples

Exemple Supposons que les fichiers suivants existent avec ces chemins relatifs :
  • some_dir/some_file_1
  • some_dir/some_file_2
  • some_dir/some_file_3
  • another_dir/some_file_1
  • another_dir/some_file_2
  • another_dir/some_file_3
Interrogez le nombre total de lignes de tous les fichiers :
Une autre expression de chemin qui donne le même résultat :
Récupérez le nombre total de lignes de some_dir à l’aide du * implicite :
Si votre liste de fichiers contient des plages de nombres avec des zéros en tête, utilisez la construction avec des accolades pour chaque chiffre séparément, ou utilisez ?.
Exemple Interrogez le nombre total de lignes des fichiers nommés file000, file001, … , file999 :
Exemple Interrogez le nombre total de lignes de tous les fichiers du répertoire big_dir/ et de ses sous-répertoires :
Exemple Exécutez une requête pour obtenir le nombre total de lignes de tous les fichiers file002 présents dans n’importe quel dossier du répertoire big_dir/, de façon récursive :

Colonnes virtuelles

  • _path — Chemin du fichier. Type : LowCardinality(String).
  • _file — Nom du fichier. Type : LowCardinality(String).
  • _size — Taille du fichier en octets. Type : Nullable(UInt64). Si la taille du fichier est inconnue, la valeur est NULL.
  • _time — Date et heure de la dernière modification du fichier. Type : Nullable(DateTime). Si la date et l’heure sont inconnues, la valeur est NULL.

paramètre use_hive_partitioning

Lorsque le paramètre use_hive_partitioning est défini sur 1, ClickHouse détecte le partitionnement de type Hive dans le chemin (/name=value/) et permet d’utiliser les colonnes de partition comme colonnes virtuelles dans la requête. Ces colonnes virtuelles porteront les mêmes noms que dans le chemin partitionné. Exemple Utiliser une colonne virtuelle créée avec un partitionnement de type Hive

Paramètres

Dernière modification le 2 juillet 2026