SELECT à partir de fichiers et des INSERT dans des fichiers, similaire à 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 objet 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
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
test.tsv :
Écriture partitionnée dans plusieurs fichiers TSV
Si vous spécifiez une expressionPARTITION 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
Commencez par définiruser_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
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>= 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
Exemple Supposons que les fichiers suivants existent avec ces chemins relatifs :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
Lorsque le paramètreuse_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