Tous les produits
Search
Centre de documentation

MaxCompute:Guide d'utilisation

Dernière mise à jour :Aug 10, 2026

Cette rubrique présente les fonctionnalités des commandes Tunnel et explique comment les utiliser pour charger et télécharger des données.

Outils pris en charge

Exécutez les commandes Tunnel dans odpscmd et MaxCompute Studio. Pour plus d'informations, consultez Connexion à l'aide d'un client local (odpscmd) et Présentation de MaxCompute Studio.

Fonctionnalités des commandes Tunnel

Les commandes Tunnel disponibles dans le client remplacent l'outil Dship. Elles permettent de charger et de télécharger des données. Voici la liste des commandes :

  • Upload : charge les données d'un fichier local vers une table MaxCompute. Chaque opération de chargement écrit les données dans une seule table ou une seule partition. Pour une table partitionnée, spécifiez la partition de destination. Pour une table à partitions multiples, spécifiez la partition de niveau le plus bas. Pour plus d'informations, consultez Upload.

  • Download : télécharge les données d'une table MaxCompute ou les résultats d'une instance spécifique vers un fichier local. Chaque opération de téléchargement permet de télécharger une table ou une partition dans un seul fichier. Pour une table partitionnée, spécifiez la partition source. Pour une table à partitions multiples, spécifiez la partition de niveau le plus bas. Pour plus d'informations, consultez Download.

  • Resume : si un chargement échoue en raison de problèmes réseau ou d'erreurs du service Tunnel, utilisez la commande Resume pour reprendre le chargement du fichier. Cette commande reprend l'opération de chargement précédente. La commande Resume ne prend pas actuellement en charge les opérations de téléchargement. Pour plus d'informations, consultez Resume.

  • Show : affiche les informations relatives aux tâches historiques. Pour plus d'informations, consultez Show.

  • Purge : vide le répertoire de session. Par défaut, cette commande supprime les journaux des trois derniers jours. Pour plus d'informations, consultez Purge.

  • Help : affiche l'aide. Des formats de commande abrégés sont pris en charge pour chaque commande et option.

  • Upsert : écrit les données en combinant les sémantiques Update et Insert. Cette commande est uniquement prise en charge pour les tables Transaction Table 2.0.

    Si aucune donnée correspondante n'est trouvée dans la table de destination, les nouvelles données sont insérées. Si les données existent déjà, elles sont mises à jour.

Limites de chargement et de téléchargement avec Tunnel

  • La fonctionnalité Tunnel et le kit de développement logiciel (SDK) Tunnel ne prennent pas actuellement en charge les opérations sur les tables externes. Utilisez Tunnel pour charger des données directement dans une table interne MaxCompute. Vous pouvez également charger des données vers OSS à l'aide du SDK Python OSS, puis créer une table externe dans MaxCompute pour mapper ces données. Pour plus d'informations sur les tables externes, consultez Présentation des tables externes.

  • Les commandes Tunnel ne permettent pas de charger ou de télécharger des données de type ARRAY, MAP ou STRUCT.

  • Le cycle de vie de chaque session Tunnel côté serveur est de 24 heures. Une session peut être utilisée dans les 24 heures suivant sa création. Elle peut également être partagée entre plusieurs processus ou threads. Toutefois, veillez à ne pas réutiliser le même BlockId.

    Remarque

    Session Tunnel : le serveur crée une session pour chaque chargement ou téléchargement et génère un UploadId ou DownloadId unique pour identifier l'opération. Le cycle de vie d'une session Tunnel côté serveur est de 24 heures. Au-delà de ce délai, la session devient inactive.

  • Lorsque vous téléchargez des données à l'aide d'une session, notez qu'une session créée par un compte Alibaba Cloud ne peut être utilisée pour les téléchargements que par ce compte Alibaba Cloud ou ses utilisateurs RAM.

Chargement et téléchargement de données de table

Avant de commencer, préparez un fichier de données nommé data.txt et enregistrez-le sous d:\data.txt. Le fichier contient les données suivantes.

shopx,x_id,100
shopy,y_id,200
shopz,z_id
Remarque

La troisième ligne de données du fichier data.txt ne correspond pas au schéma de la table partitionnée sale_detail qui sera créée. La table sale_detail est définie avec trois colonnes, mais cette ligne n'en contient que deux.

Les étapes suivantes décrivent comment charger et télécharger les données d'une table.

  1. Dans le client MaxCompute, exécutez les instructions suivantes pour créer la table partitionnée sale_detail et lui ajouter une partition.

    CREATE TABLE IF NOT EXISTS sale_detail(
          shop_name     STRING,
          customer_id   STRING,
          total_price   DOUBLE)
    PARTITIONED BY (sale_date STRING,region STRING);
    
    alter table sale_detail add partition (sale_date='201312', region='hangzhou');
  2. Utilisez la commande upload pour charger le fichier de données data.txt dans la table partitionnée sale_detail.

    • Exemple de commande

      tunnel upload d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false;
    • Valeur de retour

      Upload session: 20230505xxxxxxxxxxxb0b02dbb6bd
      Start upload:d:\data.txt
      Using \r\n to split records
      Upload in strict schema mode: true
      Total bytes:42   Split input to 1 blocks
      2023-05-05 10:11:35     upload block: '1'
      ERROR: column mismatch -,expected 3 columns, 2 columns found, please check data or delimiter
      Remarque

      Étant donné que le fichier data.txt contient des données incorrectes, l'importation des données échoue. Un ID de session et un message d'erreur sont renvoyés.

  3. Exécutez l'instruction suivante pour vérifier les données.

    • Exemple de commande

      select * from sale_detail where sale_date='201312';
    • Valeurs de retour

      ID = 20230505xxxxxxxxxxxvc61z5
      +-----------+-------------+-------------+-----------+--------+
      | shop_name | customer_id | total_price | sale_date | region |
      +-----------+-------------+-------------+-----------+--------+
      +-----------+-------------+-------------+-----------+--------+
      Remarque

      L'importation des données a échoué en raison de données incorrectes, laissant la table vide.

  4. Utilisez la commande show pour interroger l'ID de session du chargement ayant échoué.

    • Exemple de commande

      tunnel show history;
    • Résultat renvoyé

      20230505xxxxxxxxxxxb0b02dbb6bd  failed  'upload d:\data.txt sale_detail/sale_date=201312,region=Hangzhou -s false'
  5. Modifiez le fichier de données exemple data.txt afin qu'il contienne les données suivantes, qui correspondent au schéma de table de sale_detail.

    shopx,x_id,100
    shopy,y_id,200
  6. Exécutez la commande resume pour reprendre le chargement des données. Dans cette commande, 20230505xxxxxxxxxxxb0b02dbb6bd correspond à l'ID de session du chargement ayant échoué.

    • Exemple de commande

      tunnel resume 20230505xxxxxxxxxxxb0b02dbb6bd --force;
    • Valeur de retour

      start resume
      20230505xxxxxxxxxxxb0b02dbb6bd
      Upload session: 20230505xxxxxxxxxxxb0b02dbb6bd
      Start upload:d:\data.txt
      Using \r\n to split records
      Upload in strict schema mode: true
      Resume 1 blocks 
      2023-05-05 10:32:39     upload block: '1'
      2023-05-05 10:32:40     upload block complete, block id: 1
      upload complete, average speed is 0 bytes/s
      OK
  7. Exécutez l'instruction suivante pour vérifier les données. Le chargement est réussi.

    • Exemple de commande

      select * from sale_detail where sale_date='201312';
    • Valeur de retour

      ID = 20230505xxxxxxxxxxxx7afc9qcg
       +-----------+-------------+-------------+-----------+--------+
       | shop_name | customer_id | total_price | sale_date | region |
       +-----------+-------------+-------------+-----------+--------+
       | shopx     | x_id        | 100.0       | 201312    | hangzhou|
       | shopy     | y_id        | 200.0       | 201312    | hangzhou|
       +-----------+-------------+-------------+-----------+--------+
  8. Exécutez la commande download pour télécharger les données de la table sale_detail vers un fichier local nommé result.txt.

    Remarque

    Les conventions de nommage pour le chemin local path où les données sont téléchargées sont les suivantes :

    • Pour enregistrer le fichier directement dans le répertoire bin du client MaxCompute, définissez path sur filename.extension.

    • Pour enregistrer le fichier dans un autre chemin, tel que le dossier test sur le lecteur D, définissez path sur D:\test\filename.extension.

    • Si un fichier local portant le même nom existe déjà, il est écrasé.

    tunnel download sale_detail/sale_date=201312,region=hangzhou result.txt;
  9. Vérifiez le contenu du fichier result.txt. Le fichier contient le contenu suivant, ce qui indique que le téléchargement est réussi.

    Remarque

    Le fichier téléchargé affiche uniquement les valeurs des champs non partitionnés.

    shopx,x_id,100.0
    shopy,y_id,200.0

Téléchargement de données d'instance

  • Méthode 1 : Utilisez la commande tunnel download pour télécharger les résultats d'exécution d'une instance spécifique vers un fichier local.

    1. Exécutez une instruction SELECT pour interroger la table sale_detail.

      select * from sale_detail;
      Remarque

      Si les analyses complètes de table sont désactivées pour la table partitionnée sale_detail, cette commande renvoie l'erreur Table(xxxx) is full scan with all partitions, please specify partition predicates. Pour plus d'informations sur la résolution de ce problème, consultez Annexe : Codes d'erreur.

    2. Exécutez la commande Tunnel suivante pour télécharger les résultats d'exécution vers un fichier local.

      --View the instance ID of the SELECT command
      show p;
      
      --Run the download command
      tunnel download instance://20170724071705393ge3csfb8 result.txt;
  • Méthode 2 : Configurez les paramètres pour générer les résultats des requêtes SQL via InstanceTunnel par défaut.

    Après avoir activé l'option use_instance_tunnel dans le client MaxCompute, les requêtes SELECT utilisent InstanceTunnel par défaut pour télécharger les résultats. Cela permet d'éviter les erreurs de délai d'attente et les limites de volume de données lors de la récupération des résultats de requête SQL depuis la plateforme MaxCompute. Vous pouvez activer cette configuration de l'une des deux manières suivantes :

    Remarque

    Pour plus d'informations sur les contraintes et limites d'InstanceTunnel, consultez Contraintes et limites d'InstanceTunnel.

    • Dans la dernière version du client, cette option est activée par défaut dans le fichier odps_config.ini, et instance_tunnel_max_record est défini sur 10000 par défaut.

      # Download SQL results by instance tunnel
      use_instance_tunnel=true
      # The maximum number of records to download when using instance tunnel for SQL results
      instance_tunnel_max_record=10000
      Remarque

      Le paramètre instance_tunnel_max_record spécifie le nombre maximal de résultats de requête SQL à télécharger via InstanceTunnel. Si vous ne définissez pas ce paramètre, un nombre illimité d'enregistrements peut être téléchargé.

    • Exécutez la commande set console.sql.result.instancetunnel=true pour activer cette fonctionnalité.

      • Activez l'option Instance Tunnel.

        set console.sql.result.instancetunnel=true;
      • Exécutez une requête select.

        select * from wc_in;

        Le résultat suivant est renvoyé.

        ID = 20170724081946458g14csfb8
        Log view:
        http://logview/xxxxx.....
        +------------+
        | key        |
        +------------+
        | slkdfj     |
        | hellp      |
        | apple      |
        | tea        |
        | peach      |
        | apple      |
        | tea        |
        | teaa       |
        +------------+
        A total of 8 records fetched by instance tunnel. Max record number: 10000
      Remarque

      Lorsque vous utilisez InstanceTunnel pour générer les résultats d'une requête SELECT, le système imprime un message sur la dernière ligne. Dans cet exemple, l'exécution de l'instance a renvoyé un total de 8 enregistrements. De même, vous pouvez exécuter la commande set console.sql.result.instancetunnel = false pour désactiver cette fonctionnalité.