TabSeparated, Native, etc.).
Scénarios d’utilisation :
- Exporter des données de ClickHouse vers un fichier.
- Convertir des données d’un format à un autre.
- Mettre à jour des données dans ClickHouse en modifiant un fichier sur un disque.
Ce moteur n’est pas disponible actuellement dans ClickHouse Cloud ; utilisez plutôt la fonction de table S3.
Utilisation dans ClickHouse Server
Format spécifie l’un des formats de fichier disponibles. Pour exécuter
des requêtes SELECT, le format doit être pris en charge en entrée, et pour exécuter
des requêtes INSERT, en sortie. Les formats disponibles sont répertoriés dans la
section Formats.
ClickHouse ne permet pas de spécifier un chemin de système de fichiers pour File. Il utilise le dossier défini par le paramètre path dans la configuration du serveur.
Lors de la création d’une table à l’aide de File(Format), un sous-répertoire vide est créé dans ce dossier. Lorsque des données sont écrites dans cette table, elles sont placées dans le fichier data.Format de ce sous-répertoire.
Vous pouvez créer manuellement ce sous-dossier et ce fichier dans le système de fichiers du serveur, puis l’ATTACH aux métadonnées de la table portant le nom correspondant, afin de pouvoir interroger les données de ce fichier.
Soyez prudent avec cette fonctionnalité, car ClickHouse ne suit pas les modifications externes apportées à ce type de fichiers. Le résultat d’écritures simultanées via ClickHouse et en dehors de ClickHouse est indéfini.
Exemple
file_engine_table :
/var/lib/clickhouse/data/default/file_engine_table.
2. Créez manuellement /var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated avec le contenu suivant :
Utilisation dans ClickHouse-local
Format. Les flux d’entrée/sortie par défaut peuvent être indiqués à l’aide de noms numériques ou explicites, comme 0 ou stdin, 1 ou stdout. Il est possible de lire et d’écrire des fichiers compressés selon un paramètre supplémentaire du moteur ou l’extension du fichier (gz, br ou xz).
Exemple :
Détails de l’implémentation
- Plusieurs requêtes
SELECTpeuvent être exécutées en parallèle, mais les requêtesINSERTdevront attendre leur tour. - La création d’un nouveau fichier via une requête
INSERTest prise en charge. - Si le fichier existe,
INSERTy ajoutera de nouvelles valeurs. - Non pris en charge :
ALTERSELECT ... SAMPLE- Index
- Réplication
PARTITION BY
PARTITION BY — Facultatif. Il est possible de créer des fichiers distincts en partitionnant les données selon une clé de partition. Dans la plupart des cas, vous n’avez pas besoin de clé de partition et, lorsqu’elle est nécessaire, elle n’a généralement pas besoin d’être plus fine qu’un partitionnement mensuel. Le partitionnement n’accélère pas les requêtes (contrairement à l’expression ORDER BY). Vous ne devez jamais utiliser un partitionnement trop fin. Ne partitionnez pas vos données par identifiant ou nom de client (à la place, utilisez l’identifiant ou le nom du client comme première colonne de l’expression ORDER BY).
Pour un partitionnement par mois, utilisez l’expression toYYYYMM(date_column), où date_column est une colonne contenant une date de type Date. Les noms de partition ont ici le format "YYYYMM".
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 est inconnue, la valeur estNULL._time— Heure de la dernière modification du fichier. Type :Nullable(DateTime). Si l’heure est inconnue, la valeur estNULL.
Paramètres
- engine_file_empty_if_not_exists - permet de lire des données vides à partir d’un fichier inexistant. Désactivé par défaut.
- engine_file_truncate_on_insert - permet de tronquer le fichier avant d’y insérer des données. Désactivé par défaut.
- engine_file_allow_create_multiple_files - permet de créer un nouveau fichier à chaque insertion si le format comporte un suffixe. Désactivé par défaut.
- engine_file_skip_empty_files - permet d’ignorer les fichiers vides lors de la lecture. Désactivé par défaut.
- storage_file_read_method - méthode de lecture des données depuis le fichier de stockage, parmi :
read,pread,mmap. La méthodemmapne s’applique pas à clickhouse-server (elle est destinée à clickhouse-local). Valeur par défaut :preadpour clickhouse-server,mmappour clickhouse-local.