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

> Fonction de table permettant de convertir efficacement et d'insérer des données envoyées au serveur avec une structure donnée dans une table ayant une structure différente.

# input

`input(structure)` - fonction de table permettant de convertir efficacement et d’insérer des données envoyées au
serveur avec une structure donnée dans une table ayant une structure différente.

`structure` - structure des données envoyées au serveur, au format suivant `'column1_name column1_type, column2_name column2_type, ...'`.
Par exemple, `'id UInt32, name String'`.

Cette fonction ne peut être utilisée que dans une requête `INSERT SELECT`, et une seule fois, mais elle se comporte sinon comme une fonction de table ordinaire
(par exemple, elle peut être utilisée dans une sous-requête, etc.).

Les données peuvent être envoyées de la même manière que pour une requête `INSERT` ordinaire et dans n’importe quel [format](/fr/reference/formats/index) disponible,
qui doit être spécifié à la fin de la requête (contrairement à un `INSERT SELECT` ordinaire).

La principale caractéristique de cette fonction est que, lorsque le serveur reçoit les données du client, il les convertit simultanément
selon la liste d’expressions de la clause `SELECT` et les insère dans la table cible. Aucune table temporaire
contenant l’ensemble des données transférées n’est créée.

<div id="examples">
  ## Exemples
</div>

* Supposons que la table `test` ait la structure suivante `(a String, b String)`
  et que les données de `data.csv` aient une structure différente `(col1 String, col2 Date, col3 Int32)`. La requête pour insérer
  des données de `data.csv` dans la table `test` avec conversion simultanée est la suivante :

```bash theme={null}
$ cat data.csv | clickhouse-client --query="INSERT INTO test SELECT lower(col1), col3 * col3 FROM input('col1 String, col2 Date, col3 Int32') FORMAT CSV";
```

* Si `data.csv` contient des données ayant la même structure `test_structure` que la table `test`, alors ces deux requêtes sont équivalentes :

```bash theme={null}
$ cat data.csv | clickhouse-client --query="INSERT INTO test FORMAT CSV"
$ cat data.csv | clickhouse-client --query="INSERT INTO test SELECT * FROM input('test_structure') FORMAT CSV"
```
