Tous les produits
Search
Centre de documentation

Hologres:Default values

Dernière mise à jour :Aug 11, 2026

Cette rubrique explique comment Hologres gère les valeurs par défaut lors de l'écriture de données dans différents scénarios : SQL, Flink et Data Integration de DataWorks.

Règle de base : si aucune valeur par défaut n'est configurée pour un champ et qu'aucune valeur n'est fournie lors d'une opération d'écriture, le système insère NULL. Les tableaux et sections ci-dessous décrivent les variations de cette règle selon la méthode d'écriture et les paramètres utilisés.

Récapitulatif du comportement

Le tableau suivant résume le comportement des valeurs par défaut pour toutes les méthodes d'écriture. Consultez-le pour identifier rapidement le comportement attendu avant d'entrer dans les détails.

Méthode d'écriture Type de champ Valeur par défaut configurée ? Comportement
SQL Nullable Oui Insère la valeur par défaut (si le champ est omis)
SQL Nullable Non Insère NULL
SQL Non null Oui Insère la valeur par défaut (si le champ est omis)
Flink — mode JDBC Nullable Non Insère NULL
Flink — mode JDBC Nullable Oui Insère la valeur par défaut si mutatetype=InsertOrUpdate ; sinon, insère NULL
Flink — mode JDBC Non null Non Signale une erreur si EnableDefaultForNotNullColumn=false ; insère une valeur par défaut basée sur le type de données si true
Flink — mode JDBC Non null Oui Insère la valeur par défaut (calculée par le moteur Hologres) ; dans les versions antérieures à la V2.0, cela peut empêcher l'utilisation des plans fixes
Flink — mode Fixed copy Nullable Non Insère NULL
Flink — mode Fixed copy Nullable Oui Insère la valeur par défaut
Flink — mode Fixed copy Non null Non Signale une erreur
Flink — mode Fixed copy Non null Oui Insère la valeur par défaut
Flink — mode BulkLoad (HQEcopy) Nullable Non Insère NULL
Flink — mode BulkLoad (HQEcopy) Nullable Oui Insère la valeur par défaut
Flink — mode BulkLoad (HQEcopy) Non null Non Signale une erreur
Flink — mode BulkLoad (HQEcopy) Non null Oui Insère la valeur par défaut
DataWorks — lot DataX Nullable Non Insère NULL
DataWorks — lot DataX Nullable Oui, conflictMode=Replace Insère NULL
DataWorks — lot DataX Nullable Oui, conflictMode=Update Insère la valeur par défaut
DataWorks — lot DataX Non null Non, default.enable=true (par défaut) Insère une valeur par défaut basée sur le type de données (par exemple, "" ou 0)
DataWorks — lot DataX Non null Non, default.enable=false Signale une erreur
DataWorks — lot DataX Non null Oui, default.enable=true (par défaut) Insère la valeur par défaut
DataWorks — lot DataX Non null Oui, default.enable=false Insère la valeur par défaut ; dans les versions antérieures à la V2.0, les plans fixes peuvent échouer
DataWorks — temps réel StreamX Nullable Non Insère NULL
DataWorks — temps réel StreamX Nullable Oui, conflictMode=Replace ou Ignore Insère NULL
DataWorks — temps réel StreamX Nullable Oui, conflictMode=Update Insère la valeur par défaut
DataWorks — temps réel StreamX Non null Non, default.enable=true (par défaut) Insère une valeur par défaut basée sur le type de données (par exemple, "" ou 0)
DataWorks — temps réel StreamX Non null Non, default.enable=false Signale une erreur
DataWorks — temps réel StreamX Non null Oui, default.enable=true (par défaut) Insère la valeur par défaut
DataWorks — temps réel StreamX Non null Oui, default.enable=false Insère la valeur par défaut ; dans les versions antérieures à la V2.0, les plans fixes peuvent échouer

Scénarios SQL

Si une valeur par défaut est configurée pour un champ et qu'aucune valeur n'est spécifiée lors d'une opération d'écriture ou de mise à jour, Hologres remplit automatiquement ce champ avec la valeur par défaut.

Les exemples suivants utilisent cette table :

BEGIN;
CREATE TABLE default_test (
    a int NOT NULL DEFAULT 2023,
    b timestamptz DEFAULT '2023-11-17 10:11:33.276+08',
    PRIMARY KEY (a)
);
COMMIT;

Exemple 1 : Spécifiez des valeurs pour les deux colonnes. Les valeurs spécifiées écrasent les valeurs par défaut.

-- Specify values for column a and column b.
INSERT INTO default_test VALUES (1, NULL);
-- Query the table.
SELECT * FROM default_test;

Résultat :

a    b
1    \N

Exemple 2 : Omettez la colonne b. Le système insère la valeur par défaut pour la colonne b.

-- Omit column b.
INSERT INTO default_test (a) VALUES (2);
-- Query the table.
SELECT * FROM default_test;

Résultat :

a    b
1    \N
2    2023-11-17 10:11:33.276+08

Exemple 3 : Exécutez INSERT ON CONFLICT DO NOTHING sans spécifier la colonne a (la clé primaire). Le système écrit la valeur de la colonne b et insère la valeur par défaut pour la colonne a.

-- Column a is omitted; the system fills the default value (2023).
INSERT INTO default_test (b) VALUES ('2023-11-18 10:11:33.276+08') ON CONFLICT (a) DO NOTHING;
-- Query the table.
SELECT * FROM default_test;

Résultat :

a       b
2       2023-11-17 10:11:33.276+08
2023    2023-11-18 10:11:33.276+08
1       \N

Exemple 4 : Exécutez INSERT ON CONFLICT DO UPDATE avec des valeurs explicites pour les deux colonnes. Les valeurs spécifiées écrasent les valeurs par défaut.

-- Specify values for both columns; specified values take precedence.
INSERT INTO default_test (a, b) VALUES (2, null) ON CONFLICT (a) DO UPDATE SET (a,b) = ROW(EXCLUDED.*);
-- Query the table.
SELECT * FROM default_test;

Résultat :

a       b
1       \N
2023    2023-11-18 10:11:33.276+08
2       \N

Exemple 5 : Exécutez INSERT ON CONFLICT DO UPDATE en mettant à jour uniquement la colonne b. La colonne a n'est pas mise à jour.

-- Only column b is updated; column a remains unchanged.
INSERT INTO default_test (a, b) VALUES (2023, null) ON CONFLICT (a) DO UPDATE SET b = EXCLUDED.b;
-- Query the table.
SELECT * FROM default_test;

Résultat :

a       b
2       \N
1       \N
2023    \N

Écriture de données avec Flink

Pour plus d'informations sur les modes d'écriture Flink, consultez la rubrique Hologres.

Mode JDBC

Les règles suivantes s'appliquent aux champs pour lesquels aucune valeur n'est spécifiée.

Champs nullable

  • Aucune valeur par défaut configurée : le système insère NULL.

  • Valeur par défaut configurée : le système insère la valeur par défaut si mutatetype est défini sur InsertOrUpdate ; sinon, il insère NULL.

Champs non null

  • Aucune valeur par défaut configurée :

    • EnableDefaultForNotNullColumn=false : le système signale une erreur.

    • EnableDefaultForNotNullColumn=true : Holo Client insère une valeur par défaut basée sur le type de données (par exemple, une chaîne vide "").

  • Valeur par défaut configurée :

    • EnableDefaultForNotNullColumn=false : le moteur Hologres calcule et écrit la valeur par défaut. Dans les versions de Hologres antérieures à la V2.0, cela peut empêcher l'utilisation des plans fixes et entraîner des problèmes de performances.

    • EnableDefaultForNotNullColumn=true : Holo Client insère une valeur par défaut basée sur le type de données.

Vous pouvez mettre à niveau manuellement votre instance Hologres ou rejoindre le groupe DingTalk Hologres pour demander une mise à niveau. Pour plus d'informations, consultez la section « Manual upgrade » de la rubrique Upgrade an instance . Pour obtenir une assistance en ligne, consultez la rubrique Obtain online support for Hologres .

Mode Fixed copy

Seules les opérations UPDATE et IGNORE sont prises en charge dans ce mode. Lorsque vous mettez à jour des champs spécifiques, seuls ces champs sont modifiés ; tous les autres champs restent inchangés. Pour obtenir un effet REPLACE, déclarez tous les champs dans l'instruction DDL Flink.

Les règles suivantes s'appliquent aux champs pour lesquels aucune valeur n'est spécifiée.

Champs nullable

  • Aucune valeur par défaut configurée : le système insère NULL.

  • Valeur par défaut configurée : le système insère la valeur par défaut.

Champs non null

  • Aucune valeur par défaut configurée : le système signale une erreur.

  • Valeur par défaut configurée : le système insère la valeur par défaut.

Mode BulkLoad (HQEcopy)

Les opérations UPDATE ne sont pas prises en charge dans ce mode. Les règles suivantes s'appliquent aux champs pour lesquels aucune valeur n'est spécifiée.

Champs nullable

  • Aucune valeur par défaut configurée : le système insère NULL.

  • Valeur par défaut configurée : le système insère la valeur par défaut.

Champs non null

  • Aucune valeur par défaut configurée : le système signale une erreur.

  • Valeur par défaut configurée : le système insère la valeur par défaut.

Écriture de données avec Data Integration de DataWorks

Synchronisation par lots basée sur DataX

DataX de Data Integration prend en charge la synchronisation par lots à partir d'une table ou d'une base de données. Pour plus d'informations, consultez la rubrique Hologres data source. Le mode JDBC est utilisé automatiquement. Les règles suivantes s'appliquent aux champs pour lesquels aucune valeur n'est spécifiée.

Champs nullable

  • Aucune valeur par défaut configurée : le système insère NULL.

  • Valeur par défaut configurée :

    • conflictMode=Replace : le système insère NULL.

    • conflictMode=Update : le système insère la valeur par défaut.

Champs non null

  • Aucune valeur par défaut configurée :

    • default.enable=true (par défaut) : Holo Client insère une valeur par défaut basée sur le type de données (par exemple, une chaîne vide "" ou 0).

    • default.enable=false : le système signale une erreur.

  • Valeur par défaut configurée :

    • default.enable=true (par défaut) : le système insère la valeur par défaut.

    • default.enable=false : le système insère également la valeur par défaut. Dans les versions de Hologres antérieures à la V2.0, les plans fixes peuvent ne pas être utilisés, ce qui peut entraîner des problèmes de performances.

Synchronisation en temps réel basée sur StreamX

StreamX de Data Integration prend en charge la synchronisation en temps réel à partir d'une table. Pour plus d'informations, consultez la rubrique Hologres data source. Le mode JDBC est utilisé automatiquement. Les règles suivantes s'appliquent aux champs pour lesquels aucune valeur n'est spécifiée.

Champs nullable

  • Aucune valeur par défaut configurée : le système insère NULL.

  • Valeur par défaut configurée :

    • conflictMode=Replace ou conflictMode=Ignore : le système insère NULL.

    • conflictMode=Update : le système insère la valeur par défaut.

Champs non null

  • Aucune valeur par défaut configurée :

    • default.enable=true (par défaut) : Holo Client insère une valeur par défaut basée sur le type de données (par exemple, une chaîne vide "" ou 0).

    • default.enable=false : le système signale une erreur.

  • Valeur par défaut configurée :

    • default.enable=true (par défaut) : le système insère la valeur par défaut.

    • default.enable=false : le système insère également la valeur par défaut. Dans les versions de Hologres antérieures à la V2.0, les plans fixes peuvent ne pas être utilisés, ce qui peut entraîner des problèmes de performances.

Vous pouvez mettre à niveau manuellement votre instance Hologres ou rejoindre le groupe DingTalk Hologres pour demander une mise à niveau. Pour plus d'informations, consultez la section « Manual upgrade » de la rubrique Upgrade an instance . Pour obtenir une assistance en ligne, consultez la rubrique Obtain online support for Hologres .

Mapping des valeurs par défaut de Holo Client

Lorsque vous utilisez Flink ou Data Integration de DataWorks pour écrire des données en mode JDBC, Holo Client gère la couche d'écriture. Si vous spécifiez des valeurs pour des champs spécifiques lors de l'écriture des données, le paramètre default.enable est automatiquement défini sur true (équivalent à enableDefaultForNotNullColumn=true). Si un champ n'a ni valeur ni valeur par défaut configurée, Holo Client insère automatiquement une valeur par défaut basée sur le type de données. Le tableau suivant répertorie ces valeurs par défaut.

Type Valeur par défaut insérée par Holo Client
SMALLINT 0
INTEGER 0
BIGINT 0
REAL 0,0
DOUBLE PRECISION 0,0
DECIMAL 0
BOOLEAN false
VARCHAR(n) "" (chaîne vide)
CHAR(n) "" (chaîne vide)
TEXT "" (chaîne vide)
TIMESTAMPTZ 1970-01-01 08:00:00
TIMESTAMP 1970-01-01 08:00:00
DATE 1970-01-01
TIMETZ 08:00:00
TIME 08:00:00
JSON et JSONB Impossible d'écrire une valeur par défaut
BYTEA Impossible d'écrire une valeur par défaut
RoaringBitmap Impossible d'écrire une valeur par défaut
BIT(n) Impossible d'écrire une valeur par défaut
VARBIT(n) Impossible d'écrire une valeur par défaut
INTERVAL Impossible d'écrire une valeur par défaut