Fonction de table file
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
SELECT, path peut aussi être une expression qui renvoie un Array(String) :
Arguments
Valeur retournée
Exemples d’écriture dans un fichier
Écrire dans un fichier TSV
test.tsv :
Écriture partitionnée dans plusieurs fichiers TSV
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.
test_1.tsv, test_2.tsv et test_3.tsv.
Exemples de lecture depuis un fichier
SELECT depuis un fichier CSV
user_files_path dans la configuration du serveur et préparez un fichier test.csv :
test.csv dans une table, puis sélectionnez ses deux premières lignes :
Insérer des données d’un fichier dans une table
table.csv, situé dans archive1.zip ou/et archive2.zip :
Globs dans le chemin
* 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>= Net<= M.**- Représente récursivement tous les fichiers à l’intérieur d’un répertoire.
{} sont similaires aux fonctions de table remote et hdfs.
Exemples
some_dir/some_file_1some_dir/some_file_2some_dir/some_file_3another_dir/some_file_1another_dir/some_file_2another_dir/some_file_3
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
?.file000, file001, … , file999 :
big_dir/ et de ses sous-répertoires :
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 estNULL._time— Date et heure de la dernière modification du fichier. Type :Nullable(DateTime). Si la date et l’heure sont inconnues, la valeur estNULL.
paramètre use_hive_partitioning
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