ClickHouse/docs/fr/engines/table-engines/special/external-data.md
2020-10-13 20:23:29 +03:00

4.0 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 34 De données externes

Données externes pour le traitement des requêtes

ClickHouse permet d'Envoyer à un serveur les données nécessaires au traitement d'une requête, ainsi qu'une requête SELECT. Ces données sont placées dans une table temporaire (voir la section “Temporary tables”) et peut être utilisé dans la requête (par exemple, dans les DANS les opérateurs).

Par exemple, si vous disposez d'un fichier texte avec important des identifiants d'utilisateur, vous pouvez le télécharger sur le serveur avec une requête qui utilise la filtration par cette liste.

Si vous devez exécuter plusieurs requêtes avec un volume important de données externes, n'utilisez pas cette fonctionnalité. Il est préférable de télécharger les données sur la base de données à l'avance.

Les données externes peuvent être téléchargées à l'aide du client de ligne de commande (en mode non interactif) ou à l'aide de L'interface HTTP.

Dans le client de ligne de commande, vous pouvez spécifier une section paramètres du format

--external --file=... [--name=...] [--format=...] [--types=...|--structure=...]

Vous pouvez avoir plusieurs sections comme ça, pour le nombre de tables étant transmis.

external Marks the beginning of a clause. file Path to the file with the table dump, or -, which refers to stdin. Une seule table peut être récupérée à partir de stdin.

Les paramètres suivants sont facultatifs: name Name of the table. If omitted, _data is used. format Data format in the file. If omitted, TabSeparated is used.

L'un des paramètres suivants est requis:types A list of comma-separated column types. For example: UInt64,String. The columns will be named _1, _2, … structure The table structure in the formatUserID UInt64, URL String. Définit les noms et les types de colonnes.

Les fichiers spécifiés dans file sera analysé par le format spécifié dans format, en utilisant les types de données spécifié dans types ou structure. La table sera téléchargée sur le serveur et accessible en tant que table temporaire avec le nom dans name.

Exemple:

$ echo -ne "1\n2\n3\n" | clickhouse-client --query="SELECT count() FROM test.visits WHERE TraficSourceID IN _data" --external --file=- --types=Int8
849897
$ cat /etc/passwd | sed 's/:/\t/g' | clickhouse-client --query="SELECT shell, count() AS c FROM passwd GROUP BY shell ORDER BY c DESC" --external --file=- --name=passwd --structure='login String, unused String, uid UInt16, gid UInt16, comment String, home String, shell String'
/bin/sh 20
/bin/false      5
/bin/bash       4
/usr/sbin/nologin       1
/bin/sync       1

Lors de l'utilisation de L'interface HTTP, les données externes sont transmises au format multipart/form-data. Chaque tableau est transmis en tant que fichier séparé. Le nom de la table est tiré du nom du fichier. Le query_string est passé les paramètres name_format, name_types, et name_structure, où name est le nom de la table que ces paramètres correspondent. La signification des paramètres est la même que lors de l'utilisation du client de ligne de commande.

Exemple:

$ cat /etc/passwd | sed 's/:/\t/g' > passwd.tsv

$ curl -F 'passwd=@passwd.tsv;' 'http://localhost:8123/?query=SELECT+shell,+count()+AS+c+FROM+passwd+GROUP+BY+shell+ORDER+BY+c+DESC&passwd_structure=login+String,+unused+String,+uid+UInt16,+gid+UInt16,+comment+String,+home+String,+shell+String'
/bin/sh 20
/bin/false      5
/bin/bash       4
/usr/sbin/nologin       1
/bin/sync       1

Pour le traitement des requêtes distribuées, les tables temporaires sont envoyées à tous les serveurs distants.

Article Original