Passer au contenu principal
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 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.

Exemples

  • 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 :
$ 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 :
$ 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"
Dernière modification le 25 juin 2026