Insère des lignes dans une table ApsaraDB for ClickHouse.
Syntaxe
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ...
Pour les colonnes définies dans le schéma de la table mais absentes de l'instruction, ApsaraDB for ClickHouse applique les règles suivantes pour déterminer les valeurs à insérer :
| Condition | Comportement |
|---|---|
| Une expression par défaut est définie pour la colonne | Évalue l'expression et insère le résultat |
| Aucune expression par défaut n'est définie | Insère 0 ou une chaîne vide |
Utilisation de SELECT avec INSERT INTO
INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...
Les colonnes du résultat SELECT correspondent aux colonnes de l'instruction INSERT INTO selon un ordre positionnel strict ; les noms de colonnes n'ont pas besoin de coïncider. ApsaraDB for ClickHouse convertit automatiquement les types de données si nécessaire.
Prise en charge des expressions
Seule la forme VALUES accepte les expressions intégrées telles que now() et 1 + 2. Même avec VALUES, évitez les expressions intégrées, car leur évaluation ligne par ligne s'avère inefficace. Calculez plutôt les valeurs avant l'insertion.
Considérations relatives aux performances
Lorsque ApsaraDB for ClickHouse exécute une instruction INSERT INTO, il traite immédiatement les données : tri selon la clé primaire et partitionnement. Si les données à insérer s'étendent sur plusieurs mois, les performances d'insertion se dégradent considérablement.
Pour maintenir un débit d'insertion élevé :
Écrivez un volume important de données en une seule fois. Par exemple, écrivez 100 000 lignes de données à chaque opération.
Regroupez les données avant de les écrire dans un cluster ApsaraDB for ClickHouse.
Dans les scénarios suivants, les performances d'insertion ne sont pas affectées :
Les données sont écrites en temps réel.
Les données à écrire sont déjà triées par date.