> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ClickHouse permite enviar a un servidor los datos necesarios para procesar una consulta, junto con una consulta `SELECT`. Estos datos se colocan en una tabla temporal y pueden usarse en la consulta (por ejemplo, en operadores `IN`).

# Datos externos para el procesamiento de consultas

ClickHouse permite enviar a un servidor los datos necesarios para procesar una consulta, junto con una consulta `SELECT`. Estos datos se colocan en una tabla temporal (consulte la sección "Tablas temporales") y pueden usarse en la consulta (por ejemplo, en operadores `IN`).

Por ejemplo, si tiene un archivo de texto con identificadores de usuario importantes, puede cargarlo en el servidor junto con una consulta que filtre según esa lista.

Si necesita ejecutar más de una consulta con un gran volumen de datos externos, no use esta funcionalidad. Es mejor cargar los datos en la DB con antelación.

Los datos externos pueden cargarse mediante el cliente de línea de comandos (en modo no interactivo) o mediante la interfaz HTTP.

En el cliente de línea de comandos, puede especificar una sección de parámetros con el formato

```bash theme={null}
--external --file=... [--name=...] [--format=...] [--types=...|--structure=...]
```

Puede haber varias secciones como esta, según la cantidad de tablas que se estén transmitiendo.

**–external** – Marca el inicio de una cláusula.
**–file** – Ruta al archivo con el volcado de la tabla, o -, que hace referencia a stdin.
Solo se puede leer una tabla desde stdin.

Los siguientes parámetros son opcionales: **–name**– Nombre de la tabla. Si se omite, se usa \_data.
**–format** – Formato de los datos en el archivo. Si se omite, se usa TabSeparated.

Se requiere uno de los siguientes parámetros:**–types** – Una lista de tipos de columna separados por comas. Por ejemplo: `UInt64,String`. Las columnas se llamarán \_1, \_2, ...
**–structure**– La estructura de la tabla en el formato`UserID UInt64`, `URL String`. Define los nombres y tipos de las columnas.

Los archivos especificados en 'file' se analizarán con el formato especificado en 'format', usando los tipos de datos especificados en 'types' o 'structure'. La tabla se cargará en el servidor y allí estará disponible como tabla temporal con el nombre indicado en 'name'.

Ejemplos:

```bash theme={null}
$ 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
```

Al usar la interfaz HTTP, los datos externos se envían en formato multipart/form-data. Cada tabla se transmite como un archivo independiente. El nombre de la tabla se toma del nombre del archivo. A `query_string` se le pasan los parámetros `name_format`, `name_types` y `name_structure`, donde `name` es el nombre de la tabla a la que corresponden estos parámetros. El significado de estos parámetros es el mismo que al usar el cliente de línea de comandos.

Ejemplo:

```bash theme={null}
$ 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
```

En el procesamiento distribuido de consultas, las tablas temporales se envían a todos los servidores remotos.
