Tous les produits
Search
Centre de documentation

AnalyticDB:Importer des données OSS à l'aide de tables externes

Dernière mise à jour :Sep 22, 2026

AnalyticDB for MySQL prend en charge l'importation de données externes via des tables externes. Cette rubrique explique comment utiliser ces tables pour importer des données depuis OSS vers un cluster AnalyticDB for MySQL.

Prérequis

  • Le cluster AnalyticDB for MySQL et le bucket OSS doivent se trouver dans la même région. Pour plus d'informations, consultez la rubrique Activer OSS.

  • Vous avez téléchargé les fichiers de données dans un répertoire OSS.

  • L'accès par interface réseau élastique (ENI) est activé pour votre cluster AnalyticDB for MySQL Data Warehouse Edition.

    Important
    • Connectez-vous à la console AnalyticDB for MySQL. Sur la page Cluster Information, sous la section Network Information, activez le commutateur du réseau ENI.

    • L'activation ou la désactivation du réseau ENI interrompt la connectivité à la base de données pendant environ 2 minutes, rendant les opérations de lecture et d'écriture indisponibles. Évaluez attentivement l'impact avant d'activer ou de désactiver le réseau ENI.

Préparation des données

Dans cet exemple, le fichier de données person.csv est téléchargé dans le répertoire testBucketName/adb/dt=2023-06-15 sur OSS. Le fichier utilise un saut de ligne comme délimiteur de ligne et une virgule (,) comme délimiteur de colonne. Le fichier person.csv contient les exemples de données suivants :

1,james,10,2023-06-15
2,bond,20,2023-06-15
3,jack,30,2023-06-15
4,lucy,40,2023-06-15       

Procédure

Enterprise, basic, and data lakehouse editions

  1. Accédez à l'éditeur SQL Development.

    1. Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Localisez le cluster à gérer et cliquez sur son ID.

    2. Dans le volet de navigation de gauche, accédez à Job Development > SQL Development.

  2. Importez les données.

    Vous pouvez importer des données soit via l'importation standard (par défaut), soit via l'importation élastique. En mode d'importation standard, le système lit les données source depuis les nœuds de calcul et crée des index sur les nœuds de stockage, consommant ainsi des ressources de calcul et de stockage. La méthode d'importation élastique est prise en charge uniquement pour les clusters Enterprise Edition, Basic Edition, and Data Lakehouse Edition exécutant la version du noyau 3.1.10.0 ou ultérieure et disposant d'un groupe de ressources de type job. Pour plus d'informations, consultez la rubrique Méthodes d'importation des données.

    Importation standard

    1. Créez une base de données externe.

      CREATE EXTERNAL DATABASE adb_external_db;
    2. Créez une table externe. Utilisez l'instruction CREATE EXTERNAL TABLE pour créer une table externe OSS dans la base de données externe adb_external_db. Cet exemple utilise adb_external_db.person.

      Remarque

      La table externe AnalyticDB for MySQL doit avoir les mêmes noms de champs, nombre de champs, ordre des champs et types de données que le fichier source OSS.

      Créer une table externe OSS non partitionnée

      CREATE EXTERNAL TABLE adb_external_db.person
      (
       id INT,
       name VARCHAR(1023),
       age INT,
       dt VARCHAR(1023)
      )
      ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
      STORED AS TEXTFILE
      LOCATION  'oss://testBucketName/adb/dt=2023-06-15/';

      Créer une table externe OSS partitionnée

      Avant d'interroger une table externe OSS partitionnée, vous devez la créer et ajouter les partitions nécessaires.

      1. Créez une table externe OSS partitionnée.

        CREATE EXTERNAL TABLE adb_external_db.person
        (
         id INT,
         name VARCHAR(1023) ,
         age INT
        )
        PARTITIONED BY (dt STRING)
        ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
        STORED AS TEXTFILE
        LOCATION  'oss://testBucketName/adb/';
      2. Vous pouvez utiliser l'instruction ALTER TABLE ADD PARTITION pour ajouter manuellement une partition, ou l'instruction MSCK REPAIR TABLE pour rechercher et ajouter automatiquement les partitions.

        ALTER TABLE adb_external_db.person ADD PARTITION (dt='2023-06-15') LOCATION 'oss://testBucketName/adb/dt=2023-06-15/';
        Remarque
        • Pour ajouter ou supprimer des partitions d'une table externe OSS, consultez la rubrique ALTER TABLE (tables externes).

        • Pour synchroniser automatiquement les partitions d'une table externe OSS, consultez la rubrique MSCK REPAIR TABLE.

      Pour plus d'informations sur la syntaxe de création des tables externes OSS, consultez la rubrique CREATE EXTERNAL TABLE.

    3. Interrogez les données.

      Après avoir créé la table externe, vous pouvez exécuter une instruction SELECT dans AnalyticDB for MySQL pour interroger les données depuis OSS.

      SELECT * FROM adb_external_db.person;

      Le résultat suivant est renvoyé :

      +------+-------+------+-----------+
      | id   | name  | age  | dt        |
      +------+-------+------+-----------+
      |    1 | james |   10 |2023-06-15 |
      |    2 | bond  |   20 |2023-06-15 |
      |    3 | jack  |   30 |2023-06-15 |
      |    4 | lucy  |   40 |2023-06-15 |
      +------+-------+------+-----------+
    4. Créez une base de données dans AnalyticDB for MySQL. Si une base de données existe déjà, ignorez cette étape. Voici un exemple d'instruction :

      CREATE DATABASE adb_demo; 
    5. Créez une table dans AnalyticDB for MySQL pour stocker les données OSS importées. Voici un exemple d'instruction :

      Remarque

      La table interne doit correspondre à la table externe de l'étape b en termes de noms de champs, de nombre de champs, d'ordre des champs et de types de données.

      CREATE TABLE IF NOT EXISTS adb_demo.adb_import_test(
          id INT,
          name VARCHAR(1023),
          age INT,
          dt VARCHAR(1023)
      )
      DISTRIBUTED BY HASH(id);
    6. Importez les données dans la table.

      • Méthode 1 : Utilisez l'instruction INSERT INTO pour importer les données. Si une valeur de clé primaire est dupliquée, les nouvelles données sont ignorées. Cela équivaut à utiliser INSERT IGNORE INTO. Pour plus d'informations, consultez la rubrique INSERT INTO.

        INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
      • Méthode 2 : Utilisez l'instruction INSERT OVERWRITE INTO pour importer les données de manière synchrone. Cette opération écrase les données existantes dans la table.

        INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
      • Méthode 3 : Utilisez l'instruction INSERT OVERWRITE INTO pour importer les données de manière asynchrone. Pour plus d'informations, consultez la rubrique Écriture asynchrone.

        SUBMIT JOB INSERT OVERWRITE adb_demo.adb_import_test SELECT * FROM adb_external_db.person;

    Importation élastique

    1. Créez une base de données. Si une base de données existe déjà, ignorez cette étape. Voici un exemple d'instruction :

      CREATE DATABASE adb_demo; 
    2. Créez une table externe.

      Remarque
      • La table externe AnalyticDB for MySQL doit avoir les mêmes noms de champs, nombre de champs, ordre des champs et types de données que le fichier source OSS.

      • L'importation élastique prend uniquement en charge la création de tables externes avec l'instruction CREATE TABLE.

      CREATE TABLE oss_import_test_external_table
      (
        id INT(1023),
        name VARCHAR(1023),
        age INT,
        dt VARCHAR(1023)
      )
      ENGINE='OSS'
      TABLE_PROPERTIES='{
          "endpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
          "url":"oss://testBucketName/adb/dt=2023-06-15/person.csv",
          "accessid":"accesskey_id",
          "accesskey":"accesskey_secret",
          "delimiter":","
      }';
      Important

      Lors de la création d'une table externe, les paramètres TABLE_PROPERTIES pris en charge varient selon le format de fichier (CSV, Parquet ou ORC) :

      • Format CSV : Seuls les paramètres endpoint, url, accessid, accesskey, format, delimiter, null_value, maxlinelength et partition_column sont pris en charge.

      • Format Parquet : Seuls les paramètres endpoint, url, accessid, accesskey, format, maxlinelength et partition_column sont pris en charge.

      • Format ORC : Seuls les paramètres endpoint, url, accessid, accesskey, format, maxlinelength et partition_column sont pris en charge.

      Pour plus d'informations sur les paramètres configurables pour les tables externes et leurs descriptions, consultez les rubriques Tables externes OSS non partitionnées et Tables externes OSS partitionnées.

    3. Interrogez les données.

      Après la création de la table externe, vous pouvez exécuter une instruction SELECT dans AnalyticDB for MySQL pour interroger les données depuis OSS.

      SELECT * FROM oss_import_test_external_table;

      Le résultat suivant est renvoyé :

      +------+-------+------+-----------+
      | id   | name  | age  | dt        |
      +------+-------+------+-----------+
      |    1 | james |   10 |2023-06-15 |
      |    2 | bond  |   20 |2023-06-15 |
      |    3 | jack  |   30 |2023-06-15 |
      |    4 | lucy  |   40 |2023-06-15 |
      +------+-------+------+-----------+
      4 rows in set (0.35 sec)
    4. Créez une table dans AnalyticDB for MySQL pour stocker les données OSS importées. Voici un exemple d'instruction :

      Remarque

      La table interne doit correspondre à la table externe de l'étape b en termes de noms de champs, de nombre de champs, d'ordre des champs et de types de données.

      CREATE TABLE adb_import_test
      (
        id INT,
        name VARCHAR(1023),
        age INT,
        dt VARCHAR(1023)
      )
      DISTRIBUTED BY HASH(id);
    5. Importez les données.

      Important

      L'importation élastique prend uniquement en charge l'importation de données via l'instruction INSERT OVERWRITE INTO.

      • Méthode 1 : Exécutez l'instruction INSERT OVERWRITE INTO pour importer les données de manière élastique, en écrasant les données existantes dans la table. Voici un exemple d'instruction :

        /*+elastic_load=true, elastic_load_configs=[adb.load.resource.group.name=resource_group]*/
        INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_demo.oss_import_test_external_table;
      • Méthode 2 : Exécutez de manière asynchrone l'instruction INSERT OVERWRITE INTO pour importer les données de manière élastique. Vous pouvez utiliser l'instruction SUBMIT JOB pour soumettre une tâche asynchrone planifiée en arrière-plan.

        /*+elastic_load=true, elastic_load_configs=[adb.load.resource.group.name=resource_group]*/
        SUBMIT JOB INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_demo.oss_import_test_external_table;
        Important

        Vous ne pouvez pas définir de file d'attente de priorité lors de la soumission asynchrone d'une tâche d'importation élastique.

        Le résultat suivant est renvoyé :

        +---------------------------------------+
        | job_id                                |
        +---------------------------------------+
        | 202308151719510210170190**********    |

      Après avoir soumis une tâche asynchrone via SUBMIT JOB, le résultat renvoyé indique uniquement que la tâche a été soumise avec succès. Vous pouvez utiliser l'ID de tâche pour arrêter la tâche asynchrone ou interroger son statut afin de déterminer si elle a été exécutée correctement. Pour plus d'informations, consultez la rubrique Soumettre une tâche d'importation asynchrone.

      Paramètres Hint :

      • elastic_load : spécifie s'il faut utiliser l'importation élastique. Valeurs possibles : true et false. Valeur par défaut : false.

      • elastic_load_configs : paramètres de configuration de la fonctionnalité d'importation élastique. Vous devez placer les paramètres entre crochets ([ ]) et séparer plusieurs paramètres par des barres verticales (|). Le tableau suivant décrit les paramètres.

        Paramètre

        Obligatoire

        Description

        adb.load.resource.group.name

        Oui

        Nom du groupe de ressources de tâches qui exécute la tâche d'importation élastique.

        adb.load.job.max.acu

        Non

        Quantité maximale de ressources pour une tâche d'importation élastique. Unité : unités de calcul AnalyticDB (ACU). Valeur minimale : 5 ACU. Valeur par défaut : nombre de shards plus 1.

        Exécutez l'instruction suivante pour interroger le nombre de shards dans le cluster :

        SELECT count(1) FROM information_schema.kepler_meta_shards;

        spark.driver.resourceSpec

        Non

        Type de ressource du pilote Spark. Valeur par défaut : small. Pour connaître les valeurs valides, consultez la colonne Type du tableau « Paramètres de configuration des applications Spark » de la rubrique relative aux paramètres de configuration Conf.

        spark.executor.resourceSpec

        Non

        Type de ressource de l'exécuteur Spark. Valeur par défaut : large. Pour connaître les valeurs valides, consultez la colonne Type du tableau « Paramètres de configuration des applications Spark » de la rubrique relative aux paramètres de configuration Conf.

        spark.adb.executorDiskSize

        Non

        Capacité du disque de l'exécuteur Spark. Valeurs valides : (0 100]. Unité : GiB. Valeur par défaut : 10 GiB. Pour plus d'informations, consultez la section « Spécifier les ressources du pilote et de l'exécuteur » de la rubrique relative aux paramètres de configuration Conf.

    6. (Facultatif) Vérifiez si la tâche d'importation soumise est une tâche d'importation élastique.

      SELECT job_name, (job_type = 3) AS is_elastic_load FROM INFORMATION_SCHEMA.kepler_meta_async_jobs where job_name = "2023081818010602101701907303151******";

      Le résultat suivant est renvoyé :

      +---------------------------------------+------------------+
      | job_name                              | is_elastic_load  |
      +---------------------------------------+------------------+
      | 20230815171951021017019072*********** |       1          |
      +---------------------------------------+------------------+

      Si la valeur de is_elastic_load est 1, la tâche d'importation soumise est une tâche d'importation élastique. Si la valeur est 0, il s'agit d'une tâche d'importation standard.

Data warehouse edition

  1. Se connecter à un cluster et créer une base de données.

    CREATE DATABASE adb_demo;
  2. Créez une table externe. Utilisez la syntaxe CREATE TABLE pour créer une table externe OSS au format CSV, Parquet ou ORC. Pour plus d'informations sur la syntaxe, consultez la rubrique Syntaxe des tables externes OSS.

    Cette rubrique utilise une table externe non partitionnée au format CSV comme exemple.

    CREATE TABLE IF NOT EXISTS oss_import_test_external_table
    (
        id INT,
        name VARCHAR(1023),
        age INT,
        dt VARCHAR(1023) 
    )
    ENGINE='OSS'
    TABLE_PROPERTIES='{
        "endpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
        "url":"oss://testBucketname/adb/dt=2023-06-15/person.csv",
        "accessid":"accesskey_id",
        "accesskey":"accesskey_secret",
        "delimiter":",",
        "skip_header_line_count":0,
        "charset":"utf-8"
    }'; 
  3. Interrogez les données de la table externe oss_import_test_external_table.

    Remarque

    Pour les fichiers de données CSV, Parquet ou ORC, l'interrogation d'une grande table externe peut entraîner une surcharge importante des performances. Pour améliorer l'efficacité des requêtes, nous vous recommandons d'importer les données de la table externe OSS vers AnalyticDB for MySQL avant d'exécuter les requêtes, comme décrit aux étapes 4 et 5.

    SELECT * FROM oss_import_test_external_table;
  4. Créez une table dans AnalyticDB for MySQL pour stocker les données importées depuis la table externe OSS.

    CREATE TABLE IF NOT EXISTS adb_oss_import_test
    (
       id INT,
       name VARCHAR(1023),
       age INT,
       dt VARCHAR(1023) 
    )
    DISTRIBUTED BY HASH(id);
  5. Exécutez une instruction INSERT pour importer les données de la table externe OSS vers AnalyticDB for MySQL.

    Important

    Par défaut, les opérations d'importation utilisant INSERT INTO ou INSERT OVERWRITE SELECT s'exécutent de manière synchrone. Pour les grands ensembles de données, tels que ceux de plusieurs centaines de gigaoctets, le client doit maintenir une connexion persistante au serveur AnalyticDB for MySQL pendant une longue période. Durant ce temps, des problèmes réseau peuvent interrompre la connexion et provoquer l'échec de l'importation. Par conséquent, pour les volumes de données importants, nous vous recommandons d'utiliser SUBMIT JOB INSERT OVERWRITE SELECT pour effectuer l'importation de manière asynchrone.

    • Méthode 1 : Exécutez l'instruction INSERT INTO pour importer les données. Si une clé primaire est dupliquée, l'opération d'écriture actuelle est ignorée et les données ne sont pas mises à jour. Ce comportement équivaut à INSERT IGNORE INTO. Pour plus d'informations, consultez la rubrique INSERT INTO. Voici un exemple d'instruction :

      INSERT INTO adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;
    • Méthode 2 : Exécutez l'instruction INSERT OVERWRITE pour importer les données, en écrasant les données existantes dans la table. Voici un exemple d'instruction :

      INSERT OVERWRITE adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;
    • Méthode 3 : Exécutez de manière asynchrone l'instruction INSERT OVERWRITE pour importer les données. Vous pouvez utiliser SUBMIT JOB pour soumettre une tâche asynchrone pour une planification en arrière-plan. Vous pouvez ajouter un hint (/*+ direct_batch_load=true*/) avant la tâche d'écriture pour accélérer celle-ci. Pour plus d'informations, consultez la rubrique Écriture asynchrone. Voici un exemple d'instruction :

      SUBMIT JOB INSERT OVERWRITE adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;

      Le résultat suivant est renvoyé :

      +---------------------------------------+
      | job_id                                |
      +---------------------------------------+
      | 2020112122202917203100908203303****** |

      Pour plus d'informations sur la soumission d'une tâche asynchrone, consultez Soumettre une tâche d'importation asynchrone.

Syntaxe des tables externes OSS

Enterprise, Basic, and Data Lakehouse

Pour obtenir des informations sur la syntaxe de création de tables externes OSS dans les éditions Enterprise Edition, Basic Edition et Data Lakehouse Edition, consultez Tables externes OSS.

Data Warehouse

Table externe OSS non partitionnée

CREATE TABLE [IF NOT EXISTS] table_name
(column_name column_type[, …])
ENGINE='OSS'
TABLE_PROPERTIES='{
    "endpoint":"endpoint",
    "url":"OSS_LOCATION",
    "accessid":"accesskey_id",
    "accesskey":"accesskey_secret",
    "format":"csv|orc|parquet|text
    "delimiter|field_delimiter":";",
    "skip_header_line_count":1,
    "charset":"utf-8"
}';

Type de table externe

Paramètre

Obligatoire

Description

Tables externes aux formats CSV, Parquet et ORC

ENGINE='OSS'

Oui

Moteur de la table. Définissez la valeur sur OSS.

endpoint

Endpoint du bucket OSS. Actuellement, AnalyticDB for MySQL ne peut accéder à OSS que via un réseau VPC.

Remarque

Connectez-vous à la console OSS, cliquez sur le bucket cible et consultez l'Endpoint sur la page Overview du bucket.

url

Chemin d'accès au fichier ou au répertoire OSS.

  • Pour un fichier OSS, spécifiez le chemin absolu. Exemple : oss://testBucketname/adb/oss_import_test_data.csv.

  • Les chemins de répertoire doivent se terminer par une barre oblique (/). Exemple : oss://testBucketname/adb/.

    Remarque

    La table externe inclura toutes les données du répertoire spécifié.

  • Utilisez le caractère générique () à la fin du chemin pour faire correspondre tous les fichiers ou dossiers ayant un préfixe spécifique. Exemple : oss://testBucketname/adb/list_file_with_prefix/test

    Remarque

    Le caractère générique de cet exemple correspond à tous les fichiers et dossiers correspondant au préfixe, tels que oss://testBucketname/adb/list_file_with_prefix/testfile1 et

    oss://testBucketname/adb/list_file_with_prefix/test1/file2.

accessid

AccessKey ID d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de gestion OSS.

Pour savoir comment obtenir un AccessKey ID, consultez Comptes et autorisations.

accesskey

AccessKey Secret d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de gestion OSS.

Pour obtenir un AccessKey Secret, consultez Comptes et autorisations.

format

Conditionnellement obligatoire

Format du fichier.

  • Pour créer une table externe Parquet, vous devez définir ce paramètre sur parquet.

  • Pour créer une table externe ORC, vous devez définir ce paramètre sur orc.

  • Pour créer une table externe Text, vous devez définir ce paramètre sur text.

  • Si vous ne spécifiez pas ce paramètre, le format de fichier par défaut est csv.

    Remarque

    La valeur du paramètre est sensible à la casse.

maxlinelength

Non

Valeur par défaut : 32768 (32 Ko). Si le fichier de données contient des lignes dépassant cette longueur, vous pouvez augmenter cette valeur.

Exemple : "maxlinelength": 100000.

Tables externes aux formats CSV et Text

delimiter|field_delimiter

Oui

Délimiteur de colonne du fichier de données.

  • Si le type de fichier est csv, le nom du paramètre est delimiter.

  • Si le type de fichier est text, le nom du paramètre est field_delimiter.

Tables externes au format CSV

null_value

Non

Définit ce qui représente une valeur NULL dans le fichier de données CSV. Par défaut, une valeur vide est traitée comme NULL. Exemple : "null_value": "".

Important

Ce paramètre nécessite un cluster avec une version du noyau 3.1.4.2 ou ultérieure.

ossnull

Définit la règle d'interprétation des valeurs NULL dans le fichier de données CSV. Valeurs valides :

  • 1 (par défaut) : EMPTY_SEPARATORS. Traite uniquement les valeurs vides comme NULL.

    Exemple : a,"",,c --> "a","",NULL,"c"

  • 2 : EMPTY_QUOTES. Traite uniquement "" comme NULL.

    Exemple : a,"",,c --> "a",NULL,"","c"

  • 3 : BOTH. Traite à la fois les valeurs vides et "" comme NULL.

    Exemple : a,"",,c --> "a",NULL,NULL,"c"

  • 4 : NEITHER. Ne traite ni les valeurs vides ni "" comme NULL.

    Exemple : a,"",,c --> "a","","","c"

Remarque

Les exemples précédents supposent que "null_value": "".

skip_header_line_count

Nombre de lignes à ignorer au début du fichier de données. Par exemple, si un fichier CSV possède une ligne d'en-tête, définissez ce paramètre sur 1 pour l'ignorer.

La valeur par défaut est 0, ce qui indique qu'aucune ligne n'est ignorée.

oss_ignore_quote_and_escape

Si la valeur est définie sur true, les guillemets et les caractères d'échappement dans les valeurs de champ sont ignorés. La valeur par défaut est false.

Important

Ce paramètre nécessite un cluster avec une version du noyau 3.1.4.2 ou ultérieure.

charset

Jeu de caractères de la table externe OSS. Valeurs valides :

  • utf-8 (par défaut)

  • gbk

Important

Ce paramètre nécessite un cluster avec une version du noyau 3.1.10.4 ou ultérieure.

Remarque
  • Les noms de colonnes dans l'instruction CREATE TABLE de la table externe doivent être identiques aux noms de colonnes du fichier Parquet ou ORC, mais la casse n'est pas prise en compte. L'ordre des colonnes doit également être le même.

  • Lors de la création d'une table externe, vous pouvez sélectionner uniquement certaines colonnes du fichier Parquet ou ORC pour les inclure dans la table externe. Les colonnes non sélectionnées ne sont pas importées.

  • Si l'instruction CREATE TABLE de la table externe inclut une colonne qui n'existe pas dans le fichier Parquet ou ORC, les requêtes portant sur cette colonne renvoient NULL.

AnalyticDB for MySQL peut lire et écrire dans des fichiers Hive TEXT à l'aide d'une table externe OSS au format CSV. Utilisez l'instruction suivante pour créer la table :

CREATE TABLE adb_csv_hive_format_oss (
  a tinyint,
  b smallint,
  c int,
  d bigint,
  e boolean,
  f float,
  g double,
  h varchar,
  i varchar, -- binary
  j timestamp,
  k DECIMAL(10, 4),
  l varchar, -- char(10)
  m varchar, -- varchar(100)
  n date
) ENGINE = 'OSS' TABLE_PROPERTIES='{
    "format": "csv",
    "endpoint":"oss-cn-hangzhou-internal.aliyuncs.com",
    "accessid":"accesskey_id",
    "accesskey":"accesskey_secret",
    "url":"oss://testBucketname/adb_data/",
    "delimiter": "\\1",
    "null_value": "\\\\N",
    "oss_ignore_quote_and_escape": "true",
    "ossnull": 2
}';
Remarque

Tenez compte des points suivants lors de la création d'une table externe OSS au format CSV pour lire des fichiers Hive TEXT :

  • Le délimiteur de colonne par défaut pour les fichiers Hive TEXT est \1. Lors de l'utilisation d'une table externe OSS au format CSV pour lire ou écrire ces fichiers, vous devez définir le paramètre delimiter sur la valeur échappée \\1.

  • La valeur NULL par défaut pour les fichiers Hive TEXT est \N. Lors de l'utilisation d'une table externe OSS au format CSV pour lire ou écrire ces fichiers, vous devez définir le paramètre null_value sur la valeur échappée \\\\N.

  • Les autres types de données Hive de base, tels que BOOLEAN, correspondent directement aux types de données AnalyticDB for MySQL. Toutefois, les types BINARY, CHAR(n) et VARCHAR(n) correspondent tous au type AnalyticDB for MySQL VARCHAR.

Annexe : Mappings des types de données

Important
  • Les types de données que vous spécifiez lors de la création d'une table doivent correspondre aux mappings indiqués dans les tableaux suivants. Pour le type DECIMAL, la précision doit également correspondre.

  • Les tables externes Parquet ne prennent pas en charge le type STRUCT. Si vous utilisez ce type, la création de la table échoue.

  • Les tables externes ORC ne prennent pas en charge les types complexes tels que LIST, STRUCT et UNION. Si vous utilisez ces types, la création de la table échoue. Vous pouvez créer une table externe ORC contenant une colonne de type MAP, mais les requêtes effectuées sur la table échoueront.

Mapping des types de données entre les fichiers Parquet et **AnalyticDB for MySQL**

Type primitif Parquet

Type logique Parquet

AnalyticDB for MySQL type

BOOLEAN

Aucun

BOOLEAN

INT32

INT_8

TINYINT

INT32

INT_16

SMALLINT

INT32

Aucun

INT ou INTEGER

INT64

Aucun

BIGINT

FLOAT

Aucun

FLOAT

DOUBLE

Aucun

DOUBLE

  • FIXED_LEN_BYTE_ARRAY

  • BINARY

  • INT64

  • INT32

DECIMAL

DECIMAL

BINARY

UTF-8

  • VARCHAR

  • STRING

  • JSON (si la colonne Parquet contient du JSON)

INT32

DATE

DATE

INT64

TIMESTAMP_MILLIS

TIMESTAMP ou DATETIME

INT96

Aucun

TIMESTAMP ou DATETIME

Mapping des types de données des fichiers ORC vers **AnalyticDB for MySQL**

Type ORC

AnalyticDB for MySQL type

BOOLEAN

BOOLEAN

BYTE

TINYINT

SHORT

SMALLINT

INT

INT ou INTEGER

LONG

BIGINT

DECIMAL

DECIMAL

FLOAT

FLOAT

DOUBLE

DOUBLE

  • BINARY

  • STRING

  • VARCHAR

  • VARCHAR

  • STRING

  • JSON (si la colonne ORC contient du JSON)

TIMESTAMP

TIMESTAMP ou DATETIME

DATE

DATE

Mapping des types de données entre les fichiers Paimon et **AnalyticDB for MySQL**

Type Paimon

AnalyticDB for MySQL type

CHAR

VARCHAR

VARCHAR

VARCHAR

BOOLEAN

BOOLEAN

BINARY

VARBINARY

VARBINARY

VARBINARY

DECIMAL

DECIMAL

TINYINT

TINYINT

SMALLINT

SMALLINT

INT

INTEGER

BIGINT

BIGINT

FLOAT

REAL

DOUBLE

DOUBLE

DATE

DATE

TIME

Non pris en charge

TIMESTAMP

TIMESTAMP

LocalZonedTIMESTAMP

TIMESTAMP (ignore les informations de fuseau horaire local)

ARRAY

ARRAY

MAP

MAP

ROW

ROW