Tous les produits
Search
Centre de documentation

PolarDB:Export local tables serially to the OSS engine

Dernière mise à jour :Aug 11, 2026

La fonctionnalité OSSOUTFILE de PolarDB permet d'exporter des tables de base de données au format CSV et de les stocker dans le moteur OSS.

Prérequis

Votre cluster PolarDB doit répondre à l'une des conditions suivantes :

  • La version du noyau est MySQL 8.0.1 et la version de révision est 8.0.1.1.30 ou ultérieure.

  • La version du noyau est MySQL 8.0.2 et la version de correctif est 8.0.2.2.8 ou ultérieure.

Pour vérifier la version de votre cluster, consultez la rubrique Rechercher le numéro de version.

Remarques

  • L'exportation de fichiers de données vers le moteur OSS via DMS connecté à PolarDB n'est pas prise en charge. Le message d'erreur correspondant est le suivant :

    Can not issue executeUpdate() or executeLargeUpdate() for SELECTs

    Connectez-vous à PolarDB à l'aide d'un Client ou de la Command Line, puis effectuez l'exportation. Pour plus d'informations, consultez la rubrique Se connecter à un cluster de base de données.

  • Pour sauvegarder des données de manière incrémentielle vers OSS, créez une planification de sauvegarde et configurez cette planification afin d'activer les sauvegardes incrémentielles vers OSS.

  • Exécutez les tâches d'exportation sur un nœud en lecture seule. Ajoutez la syntaxe HINT /*FORCE_SLAVE*/ à votre instruction SQL ou connectez-vous directement à un nœud en lecture seule pour exporter les données.

Description des paramètres

Paramètre

Description

loose_oss_outfile_buffer_size

Taille de mémoire utilisable par chaque thread OSSOUTFILE. Valeurs valides : de 102400 à 536870912. Valeur par défaut : 134217728. Unité : octet. En règle générale, une mémoire plus importante augmente la vitesse d'exportation.

loose_max_oss_outfile_threads

Nombre de threads OSSOUTFILE que PolarDB peut démarrer simultanément. Valeurs valides : de 1 à 100. Valeur par défaut : 1. Unité : nombre.

Utilisez la commande SHOW STATUS LIKE "Oss_outfile_threads_running"; pour consulter le nombre de threads OSSOUTFILE en cours d'exécution dans le cluster.

Remarque

Ce paramètre ne s'applique plus aux clusters exécutant PolarDB MySQL Edition version 8.0.1.1.38 ou ultérieure.

Remarque

La mémoire totale maximale utilisée par le cluster lors de l'exportation de fichiers CSV vers le moteur OSS via la fonctionnalité OSSOUTFILE se calcule ainsi :

loose_max_oss_outfile_threads * loose_oss_outfile_buffer_size

Veillez à ce que la fonctionnalité OSSOUTFILE n'utilise pas plus de 5 % de la mémoire totale d'un nœud, sous peine d'affecter les autres charges de travail s'exécutant sur ce nœud.

Utilisation

Syntax

SELECT * FROM table_name INTO OSSOUTFILE 'outfile_path' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';
Remarque
  • COLUMNS TERMINATED BY : définit le séparateur entre les champs.

  • OPTIONALLY ENCLOSED BY : spécifie le caractère englobant les valeurs de champ. Avec l'option OPTIONALLY, seuls les champs de type chaîne sont encadrés. Sans cette option, tous les types de champs le sont.

  • NULL_MARKER BY : détermine l'affichage des valeurs NULL dans le fichier de sortie. Les règles suivantes régissent les valeurs de sortie NULL, classées par ordre de priorité décroissante :

    • NULL_MARKER : définit directement la valeur de sortie NULL. Vous pouvez attribuer n'importe quelle valeur à NULL_MARKER. Cette option possède la priorité la plus élevée.

    • ESCAPED BY : accepte uniquement un caractère unique. La sortie NULL devient ce caractère suivi de N. Par exemple, si ESCAPED BY '\', NULL apparaît sous la forme \N. Cette option vient en deuxième position.

    • NULL (par défaut) : si aucune des options ci-dessus n'est spécifiée, NULL apparaît sous la forme de la chaîne « NULL ». Cette option a la priorité la plus basse. La chaîne « NULL » n'est pas encadrée par les caractères ENCLOSED.

  • LINES TERMINATED BY : indique le séparateur de ligne.

Pour plus d'informations, reportez-vous à la documentation officielle MySQL.

Parameter Description

Paramètre

Description

outfile_path

Spécifie l'emplacement du fichier dans OSS et comprend les éléments suivants :

  • Les informations du serveur OSS, qui identifient le nœud OSS et le chemin de chargement de base. Pour plus d'informations, consultez la rubrique Accéder aux données OSS à l'aide d'une table externe OSS.

  • (Facultatif) Un chemin unique pour la tâche en cours.

  • Le nom du fichier après le chargement.

Concaténez ces trois parties avec /. Le chemin de tâche unique peut contenir plusieurs caractères / pour représenter des répertoires imbriqués. Après le chargement dans le moteur OSS, le chemin complet du fichier devient : chemin du serveur OSS + chemin de tâche unique. Le paramètre outfile_path doit inclure le nom final du fichier.

table_name

Nom de la table.

Procédure

Créer un serveur OSS

CREATE SERVER outserver FOREIGN DATA WRAPPER oss OPTIONS ( EXTRA_SERVER_INFO '{"oss_endpoint": "oss-cn-zhangjiakou-internal.aliyuncs.com", "oss_bucket": "polardb", "oss_access_key_id": "*******", "oss_access_key_secret": "********", "oss_prefix":"B_outfile"}');                 
Remarque

Exporter vers OSS

Prenons l'exemple du fichier OSS chargé suivant : oss://polardb/B_outfile/tpch/1t/parallel-lineitem.CSV.

  • Nom du bucket : polardb.

  • Chemin et nom de fichier : B_outfile/tpch/1t/parallel-lineitem.CSV.

SELECT * FROM lineitem INTO OSSOUTFILE 'outserver/tpch/1t/parallel-lineitem.CSV' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';

Vérifier l'utilisation de la mémoire et des threads

Si la version Milvus de votre cluster est 8.0.1.1.38 ou ultérieure, utilisez les commandes suivantes pour consulter en temps réel la consommation totale de mémoire et de threads pour la tâche d'exportation en cours.

  • Consultez l'utilisation totale de la mémoire en temps réel, exprimée en octets.

    SHOW STATUS LIKE "%Oss_outfile_memory_used%";
  • Consultez le nombre total de threads en temps réel.

    SHOW STATUS LIKE "%Oss_outfile_threads_running%";
Remarque

Si vous exécutez la tâche d'exportation via le Cluster Endpoint, exécutez la commande SHOW STATUS ainsi que la commande d'exportation sur le même nœud afin d'obtenir une vue précise de l'utilisation des ressources mémoire pour ce nœud spécifique.

Étapes suivantes

FAQ

Lors de l'exportation vers OSS, vous recevez cette erreur : ERROR 1086 (HY000): File 'xxxx' already exists

Cette erreur indique qu'un fichier portant le même nom existe déjà dans OSS. Adoptez l'une des solutions suivantes :

  • Supprimez manuellement le fichier existant dans OSS, puis relancez l'instruction SELECT ... INTO OSSOUTFILE ....

  • Recourez à la syntaxe Hint OSS_REPLACE_EXISTED_FILE() pour écraser le fichier existant. Le format est le suivant :

    SELECT /*+ OSS_REPLACE_EXISTED_FILE() */ * FROM lineitem INTO OSSOUTFILE 'outserver/tpch/1t/parallel-lineitem.CSV' COLUMNS TERMINATED BY '|@|' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY "" LINES TERMINATED BY '\n';
    Remarque
    • Cette syntaxe Hint force l'écrasement du fichier existant dans OSS. Si le versioning OSS n'est pas activé, il sera impossible de récupérer le fichier écrasé. Pensez à activer le versioning OSS avant de poursuivre.

    • Votre cluster PolarDB doit correspondre à l'une des versions suivantes pour utiliser cette syntaxe Hint :

      • La version du noyau est MySQL 8.0.1 et la version de révision est 8.0.1.1.31 ou ultérieure.

      • La version du noyau est MySQL 8.0.2 et la version de révision est 8.0.2.2.9 ou ultérieure.

Lors de l'exportation vers OSS, vous recevez cette erreur : OSS error: error message : The bucket you access does not belong to you., error code: AccessDenied

Cette erreur signifie que l'AccessKey de votre utilisateur RAM ou de votre compte Alibaba Cloud ne dispose pas des permissions nécessaires pour accéder au bucket OSS. Vérifiez les permissions associées à votre AccessKey.