Tous les produits
Search
Centre de documentation

ApsaraDB for SelectDB:Importer des données avec OSS Load

Dernière mise à jour :Aug 11, 2026

OSS Load permet d'importer en une seule fois des centaines de gigaoctets de données depuis Object Storage Service (OSS) vers ApsaraDB for SelectDB via le réseau interne. L'importation s'exécute de manière asynchrone : après soumission de la tâche, SelectDB traite les fichiers en arrière-plan pendant que vous poursuivez vos activités.

Cas d'utilisation d'OSS Load

OSS Load est recommandé lorsque :

  • Vous devez importer de grands lots de fichiers (de quelques dizaines à plusieurs centaines de gigaoctets).

  • Vos fichiers sont stockés dans un bucket OSS situé dans la même région que votre instance SelectDB.

  • Vous devez charger des fichiers au format CSV, PARQUET ou ORC.

OSS Load utilise en interne le protocole S3 ; la syntaxe contient donc les mots-clés AWS et S3. Ce comportement est normal, car ApsaraDB for SelectDB prend en charge tout stockage objet compatible S3 et l'accès à OSS s'effectue via l'endpoint compatible S3.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Une paire d'AccessKey. Consultez la rubrique Create an AccessKey pair.

  • Un bucket OSS dans la même région que votre instance ApsaraDB for SelectDB. Reportez-vous à la documentation Get started by using the OSS console.

  • Un accès à OSS via un Virtual Private Cloud (VPC), car OSS Load emprunte l'endpoint VPC interne et non l'endpoint public.

Syntaxe

LOAD LABEL <load_label>
(
    data_desc1[, data_desc2, ...]
)
WITH S3
(
    "AWS_PROVIDER" = "OSS",
    "AWS_REGION" = "<region>",
    "AWS_ENDPOINT" = "<endpoint>",
    "AWS_ACCESS_KEY" = "<AccessKey ID>",
    "AWS_SECRET_KEY" = "<AccessKey secret>"
)
PROPERTIES
(
    "key1" = "value1", ...
);
Remarque

Le chemin du bucket OSS doit commencer par s3://.

Paramètres

Description des données (data_desc)

Chaque bloc data_desc décrit un ensemble de fichiers à importer. La syntaxe complète est la suivante :

[MERGE|APPEND|DELETE]
DATA INFILE
(
    "file_path1"[, "file_path2", ...]
)
[NEGATIVE]
INTO TABLE `<table_name>`
[PARTITION (p1, p2, ...)]
[COLUMNS TERMINATED BY "<column_separator>"]
[FORMAT AS "<file_type>"]
[(column_list)]
[COLUMNS FROM PATH AS (c1, c2, ...)]
[PRECEDING FILTER predicate]
[SET (column_mapping)]
[WHERE predicate]
[DELETE ON expr]
[ORDER BY source_sequence]
[PROPERTIES ("key1"="value1", ...)]
Paramètre Description
`MERGE APPEND

DELETE`

Type de fusion des données. Valeur par défaut : APPEND. Les options MERGE et DELETE s'appliquent uniquement aux tables du modèle Unique Key. Avec MERGE, utilisez DELETE ON pour spécifier la colonne delete_flag. Avec DELETE, les lignes importées sont supprimées de la table.

DATA INFILE Chemin du ou des fichiers à importer. Les caractères génériques sont pris en charge. Il doit s'agir d'un chemin de fichier et non d'un répertoire.
NEGATIVE Importe les données selon une méthode négative qui inverse les valeurs entières des colonnes agrégées par SUM afin de compenser des données erronées précédemment importées. Cette option ne concerne que les tables utilisant l'agrégation SUM sur des colonnes entières.
PARTITION (p1, p2, ...) Partitions cibles de l'importation. Les données n'appartenant pas aux partitions spécifiées sont ignorées.
COLUMNS TERMINATED BY Délimiteur de colonnes. Valable uniquement pour les fichiers CSV. Doit être codé sur un seul octet.
FORMAT AS Format de fichier. Valeurs autorisées : CSV, PARQUET, ORC. Valeur par défaut : CSV.
column_list Ordre des colonnes dans le fichier source. Pour plus d'informations, consultez Converting source data.
COLUMNS FROM PATH AS Colonnes à extraire depuis le chemin du fichier.
PRECEDING FILTER predicate Conditions prédéfinies de filtrage des données. Celles-ci sont d'abord fusionnées séquentiellement avec les lignes sources selon les paramètres column list et COLUMNS FROM PATH AS, puis filtrées selon ces conditions.
SET (column_mapping) Fonctions de transformation appliquées aux colonnes des données sources.
WHERE predicate Conditions de filtrage appliquées aux données importées.
DELETE ON expr Réservé au type MERGE. Spécifie la colonne delete_flag ainsi que sa condition. Applicable uniquement aux tables du modèle Unique Key.
ORDER BY Colonne de séquençage pour l'importation. Garantit l'ordre des données lors de l'importation dans les tables du modèle Unique Key.
PROPERTIES Paramètres de format supplémentaires. Pour les fichiers JSON, définissez json_root, jsonpaths et fuzzy_parse.

Paramètres de connexion OSS (WITH S3)

Paramètre Description
AWS_PROVIDER Fournisseur de stockage objet. Définissez cette valeur sur OSS.
AWS_REGION Région où se trouve le bucket OSS.
AWS_ENDPOINT Endpoint utilisé pour accéder aux données OSS. Consultez la page Regions and endpoints. Le bucket OSS et l'instance SelectDB doivent résider dans la même région.
AWS_ACCESS_KEY AccessKey ID permettant l'accès à OSS.
AWS_SECRET_KEY AccessKey secret permettant l'accès à OSS.

Propriétés de la tâche (PROPERTIES)

Paramètre Valeur par défaut Description
timeout 14400 (4 heures) Délai d'expiration de la tâche d'importation, exprimé en secondes.
max_filter_ratio 0 Proportion maximale de lignes pouvant être filtrées en raison de problèmes de qualité des données. Valeurs valides : 0 à 1.
exec_mem_limit 2147483648 (2 GiB) Mémoire maximale allouée à la tâche d'importation, en octets.
strict_mode false Active ou désactive le mode strict pour la tâche d'importation.
timezone Asia/Shanghai Fuseau horaire appliqué aux fonctions temporelles telles que strftime, alignment_timestamp et from_unixtime. Reportez-vous à la List of all time zones.
load_parallelism 1 Nombre de tâches d'importation simultanées. Augmentez cette valeur pour accélérer les importations volumineuses.
send_batch_parallelism Nombre de tâches simultanées pour l'envoi des données par lots. Plafonné par le paramètre BE max_send_batch_parallelism_per_job.
load_to_single_tablet false Indique si toutes les données doivent être importées dans un seul tablet par partition. Concerne uniquement les tables du modèle Duplicate Key avec partitionnement aléatoire.

Importer des données depuis OSS

L'exemple suivant illustre la création d'une table, la préparation d'un fichier CSV d'exemple dans OSS, puis son chargement via OSS Load.

Étape 1 : Créez la table cible.

CREATE TABLE test_table
(
    id int,
    name varchar(50),
    age int,
    address varchar(50),
    url varchar(500)
)
DISTRIBUTED BY HASH(id) BUCKETS 4
PROPERTIES("replication_num" = "1");

Étape 2 : Chargez votre fichier de données dans OSS.

Chargez un fichier CSV nommé test_file.txt dans votre bucket OSS. Le contenu du fichier doit ressembler à ceci :

1,yang,32,shanghai,http://example.com
2,wang,22,beijing,http://example.com
3,xiao,23,shenzhen,http://example.com

Étape 3 : Soumettez la tâche d'importation.

LOAD LABEL test_db.test_label_1
(
    DATA INFILE("s3://your_bucket_name/test_file.txt")
    INTO TABLE test_table
    COLUMNS TERMINATED BY ","
)
WITH S3
(
    "AWS_PROVIDER" = "OSS",
    "AWS_REGION" = "oss-cn-beijing",
    "AWS_ENDPOINT" = "oss-cn-beijing-internal.aliyuncs.com",
    "AWS_ACCESS_KEY" = "<your_access_key>",
    "AWS_SECRET_KEY" = "<your_secret_key>"
)
PROPERTIES
(
    "timeout" = "3600"
);

L'instruction LOAD se compose de quatre parties :

  • LABEL : Identifiant unique de la tâche d'importation, permettant d'en consulter l'état et de l'annuler si nécessaire.

  • Déclaration des données : Chemin du fichier source, format et table de destination.

  • WITH S3 : Identifiants de connexion OSS et endpoint.

  • PROPERTIES : Paramètres au niveau de la tâche, tels que le délai d'expiration.

Surveiller et gérer les tâches d'importation

Vérifier l'état d'une tâche

OSS Load fonctionne de manière asynchrone. Après avoir soumis la tâche, utilisez la commande SHOW LOAD pour suivre sa progression.

SHOW LOAD
[FROM <db_name>]
[
   WHERE
   [LABEL [ = "your_label" | LIKE "label_matcher"]]
   [STATE = ["PENDING"|"ETL"|"LOADING"|"FINISHED"|"CANCELLED"]]
]
[ORDER BY ...]
[LIMIT limit][OFFSET offset];
Paramètre Valeur par défaut Description
db_name Base de données courante Base de données à interroger.
LABEL Filtre par libellé. Prend en charge la correspondance exacte (=) et la correspondance par motif (LIKE).
STATE Filtre par état de la tâche.
ORDER BY Trie les résultats.
LIMIT Tous les enregistrements Nombre maximal d'enregistrements à retourner.
OFFSET 0 Nombre d'enregistrements à ignorer.

Exemples :

Interrogez les tâches de la base example_db dont le libellé correspond à 2014_01_02, en retournant les 10 plus anciennes :

SHOW LOAD FROM example_db WHERE LABEL LIKE "2014_01_02" LIMIT 10;

Recherchez une tâche spécifique et triez les résultats par heure de début :

SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" ORDER BY LoadStartTime DESC;

Listez les tâches actuellement à l'état LOADING :

SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" AND STATE = "LOADING";

Effectuez une requête paginée (ignorez les 5 premiers résultats, retournez les 10 suivants) :

SHOW LOAD FROM example_db ORDER BY LoadStartTime DESC LIMIT 5,10;
SHOW LOAD FROM example_db ORDER BY LoadStartTime DESC LIMIT 10 OFFSET 5;

Annuler une tâche d'importation

Annulez toute tâche n'ayant pas encore atteint l'état FINISHED ou CANCELLED. Après l'annulation, toutes les données écrites par la tâche font l'objet d'une restauration (rollback).

CANCEL LOAD
[FROM <db_name>]
WHERE [LABEL = "<load_label>" | LABEL LIKE "<label_pattern>"];
Paramètre Valeur par défaut Description
db_name Base de données courante Base de données contenant la tâche d'importation.
load_label Libellé de la tâche à annuler. Prend en charge la correspondance exacte ainsi que la correspondance par motif via LABEL LIKE.

Exemples :

Annulez une tâche spécifique :

CANCEL LOAD
FROM example_db
WHERE LABEL = "example_db_test_load_label";

Annulez toutes les tâches dont le libellé commence par example_ :

CANCEL LOAD
FROM example_db
WHERE LABEL LIKE "example_";

Résolution des problèmes

Expiration du délai d'importation

Le délai d'expiration par défaut est de 4 heures (14 400 secondes). Si une tâche dépasse cette limite, évitez de simplement augmenter le paramètre timeout : les nouvelles tentatives longues deviennent coûteuses lorsqu'une tâche échoue tardivement.

Privilégiez plutôt le découpage des fichiers volumineux en fichiers plus petits, puis lancez plusieurs tâches d'importation distinctes.

Si le volume de données reste raisonnable mais que la tâche expire tout de même, augmentez la valeur de load_parallelism afin d'exécuter davantage de tâches en parallèle, puis ajustez le paramètre timeout en conséquence.