すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:外部テーブルを使用した OSS データのインポート

最終更新日:May 08, 2026

AnalyticDB for MySQL は、外部テーブルを使用して外部データをインポートすることをサポートしています。このトピックでは、OSS から AnalyticDB for MySQL クラスターにデータをインポートする方法について説明します。

前提条件

  • AnalyticDB for MySQL クラスターと OSS バケットが同一リージョン内に存在している必要があります。詳細については、「OSS の有効化」をご参照ください。

  • データファイルを OSS ディレクトリ にアップロードしました。

  • ご利用の AnalyticDB for MySQL Data Warehouse Edition クラスターで、エラスティックネットワークインターフェース (ENI) アクセスが有効になっている必要があります。

    重要
    • AnalyticDB for MySQL コンソール にログインします。クラスター情報 ページの ネットワーク情報 セクションで、ENI ネットワークスイッチをオンにします。

    • ENI ネットワークの有効化または無効化を行うと、約 2 分間データベース接続が中断され、読み取りおよび書き込み操作ができなくなります。ENI ネットワークを有効化または無効化する前に、影響を慎重に評価してください。

データ準備

この例では、データファイル person.csv を OSS 内の testBucketName/adb/dt=2023-06-15 ディレクトリにアップロードします。ファイルは改行を行区切り文字として使用し、カンマ (,) を列区切り文字として使用します。person.csv ファイルには以下のサンプルデータが含まれています。

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

操作手順

エンタープライズ、ベーシック、およびデータレイクハウス エディション

  1. SQL 開発エディターに移動します。

    1. AnalyticDB for MySQL コンソール にログインします。コンソール左上隅でリージョンを選択し、左側ナビゲーションウィンドウで クラスターリスト をクリックします。管理対象のクラスターを見つけ、クラスター ID をクリックします。

    2. 左側ナビゲーションウィンドウで、ジョブを開発する > Sql開発 を選択します。

  2. データをインポートします。

    通常インポート(デフォルト)またはエラスティックインポートのいずれかを使用してデータをインポートできます。通常インポートモードでは、システムがコンピュートノードからソースデータを読み取り、ストレージノードでインデックスを作成するため、コンピュートリソースとストレージリソースの両方を消費します。 エラスティックインポート方式は、カーネルバージョン 3.1.10.0 以降を実行し、ジョブタイプのリソースグループを持つ Enterprise Edition、Basic Edition、および Data Lakehouse Edition クラスターでのみサポートされています。詳細については、「データインポート方法」をご参照ください。

    通常インポート

    1. 外部データベースを作成します。

      CREATE EXTERNAL DATABASE adb_external_db;
    2. 外部テーブルを作成します。adb_external_db 外部データベース内に OSS 外部テーブルを作成するために、CREATE EXTERNAL TABLE 文を使用します。このトピックでは adb_external_db.person を例として使用します。

      説明

      AnalyticDB for MySQL の外部テーブルは、ソース OSS ファイルとフィールド名、フィールド数、フィールド順序、データ型が一致している必要があります。

      パーティションなしの OSS 外部テーブルの作成

      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/';

      パーティション付き OSS 外部テーブルの作成

      パーティション付き OSS 外部テーブルをクエリするには、事前にテーブルを作成し、必要なパーティションを追加しておく必要があります。

      1. パーティション付き OSS 外部テーブルを作成します。

        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. ALTER TABLE ADD PARTITION 文を使用してパーティションを手動で追加するか、MSCK REPAIR TABLE 文を使用してパーティションを自動的に検出して追加できます。

        ALTER TABLE adb_external_db.person ADD PARTITION (dt='2023-06-15') LOCATION 'oss://testBucketName/adb/dt=2023-06-15/';
        説明
        • OSS 外部テーブルへのパーティションの追加または削除については、「ALTER TABLE (外部テーブル)」をご参照ください。

        • OSS 外部テーブルのパーティションを自動同期する方法については、「MSCK REPAIR TABLE」をご参照ください。

      OSS 外部テーブルの作成構文の詳細については、「CREATE EXTERNAL TABLE」をご参照ください。

    3. データをクエリします。

      外部テーブルを作成後、AnalyticDB for MySQL で SELECT 文を実行して OSS からデータをクエリできます。

      SELECT * FROM adb_external_db.person;

      以下の結果が返されます。

      +------+-------+------+-----------+
      | 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. AnalyticDB for MySQL にデータベースを作成します。既にデータベースが存在する場合は、このステップをスキップできます。以下の文を例として示します。

      CREATE DATABASE adb_demo; 
    5. AnalyticDB for MySQL に、インポートされた OSS データを格納するためのテーブルを作成します。以下の文を例として示します。

      説明

      内部テーブルは、ステップ b の外部テーブルとフィールド名、フィールド数、フィールド順序、データ型が一致している必要があります。

      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. テーブルにデータをインポートします。

      • 方法 1:INSERT INTO 文を使用します。プライマリキーが重複する場合、新しいデータは無視されます。これは INSERT IGNORE INTO と同等です。詳細については、「INSERT INTO」をご参照ください。例:

        INSERT INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
      • 方法 2:INSERT OVERWRITE INTO 文を使用してデータを同期的にインポートします。これにより、テーブル内の既存データが上書きされます。例:

        INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
      • 方法 3:INSERT OVERWRITE INTO 文を使用してデータを非同期的にインポートします。詳細については、「非同期書き込み」をご参照ください。例:

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

    エラスティックインポート

    1. データベースを作成します。既にデータベースが存在する場合は、このステップをスキップできます。以下の文を例として示します。

      CREATE DATABASE adb_demo; 
    2. 外部テーブルを作成します。

      説明
      • AnalyticDB for MySQL の外部テーブルは、ソース OSS ファイルとフィールド名、フィールド数、フィールド順序、データ型が一致している必要があります。

      • エラスティックインポートでは、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":","
      }';
      重要

      外部テーブル作成時にサポートされる TABLE_PROPERTIES パラメーターは、ファイル形式 (CSV、Parquet、ORC) によって異なります。

      • CSV 形式:endpointurlaccessidaccesskeyformatdelimiternull_value、および partition_column パラメーターのみがサポートされています。

      • Parquet 形式: endpointurlaccessidaccesskeyformat、および partition_column パラメーターのみがサポートされています。

      • ORC 形式: endpointurlaccessidaccesskeyformat、および partition_column パラメーターのみがサポートされています。

      外部テーブルで設定可能なパラメーターとその説明の詳細については、「OSS パーティションなし外部テーブル」および「OSS パーティション付き外部テーブル」をご参照ください。

    3. データをクエリします。

      外部テーブルを作成後、AnalyticDB for MySQL で SELECT 文を実行して OSS からデータをクエリできます。

      SELECT * FROM oss_import_test_external_table;

      以下の結果が返されます。

      +------+-------+------+-----------+
      | 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. AnalyticDB for MySQL に、インポートされた OSS データを格納するためのテーブルを作成します。以下の文を例として示します。

      説明

      内部テーブルは、ステップ b の外部テーブルとフィールド名、フィールド数、フィールド順序、データ型が一致している必要があります。

      CREATE TABLE adb_import_test
      (
        id INT,
        name VARCHAR(1023),
        age INT,
        dt VARCHAR(1023)
      )
      DISTRIBUTED BY HASH(id);
    5. データをインポートします。

      重要

      エラスティックインポートでは、INSERT OVERWRITE INTO 文を使用したデータのインポートのみがサポートされています。

      • 方法 1:INSERT OVERWRITE INTO 文を実行してデータをエラスティックインポートし、テーブル内の既存データを上書きします。以下の文を例として示します。

        /*+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;
      • 方法 2:INSERT OVERWRITE INTO 文を非同期的に実行してデータをエラスティックインポートします。SUBMIT JOB 文を使用して、バックグラウンドでスケジュールされる非同期タスクを送信できます。

        /*+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;
        重要

        非同期でエラスティックインポートタスクを送信する際、優先度付きキューを設定することはできません。

        以下の結果が返されます。

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

      SUBMIT JOB を使用して非同期タスクを送信すると、返される結果はタスクが正常に送信されたことのみを示します。ジョブ ID を使用して非同期タスクを終了したり、ステータスをクエリしてタスクが正常に実行されたかどうかを確認したりできます。詳細については、「非同期インポートジョブの送信」をご参照ください。

      ヒントパラメーター:

      • elastic_load:エラスティックインポートを使用するかどうかを指定します。有効な値:true および false。デフォルト値:false。

      • elastic_load_configs:エラスティックインポート機能の構成パラメーターです。パラメーターは角括弧 ([ ]) で囲み、複数のパラメーターを縦棒 (|) で区切る必要があります。以下の表にパラメーターを示します。

        パラメーター

        必須

        説明

        adb.load.resource.group.name

        はい

        エラスティックインポートジョブを実行するジョブリソースグループの名前。

        adb.load.job.max.acu

        いいえ

        エラスティックインポートジョブの最大リソース量。単位:AnalyticDB 計算ユニット (ACU)。最小値:5 ACU。デフォルト値:シャード数 + 1

        クラスターのシャード数をクエリするには、以下の文を実行します。

        SELECT count(1) FROM information_schema.kepler_meta_shards;

        spark.driver.resourceSpec

        いいえ

        Spark ドライバーのリソースタイプ。 デフォルト値:small。有効な値については、「Conf 構成パラメーター」トピックの「Spark アプリケーション構成パラメーター」表の「Type」列をご参照ください。

        spark.executor.resourceSpec

        いいえ

        Spark エグゼキューターのリソースタイプ。 デフォルト値:large。有効な値については、「Conf 構成パラメーター」トピックの「Spark アプリケーション構成パラメーター」表の「Type」列をご参照ください。

        spark.adb.executorDiskSize

        いいえ

        Spark エグゼキューターのディスク容量。有効な値:(0,100]。単位:GiB。デフォルト値:10 GiB。詳細については、「Conf 構成パラメーター」トピックの「ドライバーおよびエグゼキューターリソースの指定」セクションをご参照ください。

    6. (オプション)送信されたインポートタスクがエラスティックインポートタスクかどうかを確認します。

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

      以下の結果が返されます。

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

      is_elastic_load の値が 1 の場合、送信されたインポートタスクはエラスティックインポートタスクです。値が 0 の場合、タスクは通常インポートタスクです。

データウェアハウス エディション

  1. クラスターに接続 してデータベースを作成します。

    CREATE DATABASE adb_demo;
  2. 外部テーブルを作成します。CREATE TABLE 構文を使用して、CSV、Parquet、または ORC 形式の OSS 外部テーブルを作成します。構文の詳細については、「OSS 外部テーブル構文」をご参照ください。

    このトピックでは、CSV 形式のパーティションなし外部テーブルを例として使用します。

    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. oss_import_test_external_table 外部テーブルからデータをクエリします。

    説明

    CSV、Parquet、または ORC データファイルの場合、大規模な外部テーブルをクエリすると、パフォーマンスに大きなオーバーヘッドが発生する可能性があります。クエリ効率を向上させるため、ステップ 4 および 5 で説明されているように、OSS 外部テーブルから AnalyticDB for MySQL にデータをインポートしてからクエリを実行することを推奨します。

    SELECT * FROM oss_import_test_external_table;
  4. AnalyticDB for MySQL に、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. INSERT 文を実行して、OSS 外部テーブルから AnalyticDB for MySQL にデータをインポートします。

    重要

    INSERT INTO または INSERT OVERWRITE SELECT を使用したデータインポート操作は、デフォルトで同期的に実行されます。数百ギガバイトなどの大規模データセットの場合、クライアントは長時間にわたり AnalyticDB for MySQL サーバーとの持続的接続を維持する必要があります。この間、ネットワークの問題により接続が中断され、インポートが失敗する可能性があります。そのため、大規模なデータ量の場合は、SUBMIT JOB INSERT OVERWRITE SELECT を使用して非同期的にインポートすることを推奨します。

    • 方法 1:INSERT INTO 文を実行してデータをインポートします。プライマリキーが重複する場合、現在の書き込み操作は無視され、データは更新されません。この動作は INSERT IGNORE INTO と同等です。詳細については、「INSERT INTO」をご参照ください。以下の文を例として示します。

      INSERT INTO adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;
    • 方法 2:INSERT OVERWRITE 文を実行してデータをインポートし、テーブル内の既存データを上書きします。以下の文を例として示します。

      INSERT OVERWRITE adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;
    • 方法 3:INSERT OVERWRITE 文を非同期的に実行してデータをインポートします。SUBMIT JOB を使用して、バックグラウンドでスケジュールされる非同期タスクを送信できます。書き込みタスクの前にヒント (/*+ direct_batch_load=true*/) を追加して、タスクを高速化できます。詳細については、「非同期書き込み」をご参照ください。以下の文を例として示します。

      SUBMIT JOB INSERT OVERWRITE adb_oss_import_test
      SELECT * FROM oss_import_test_external_table;

      以下の結果が返されます。

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

      非同期タスクの送信方法の詳細については、「非同期インポートジョブの送信」をご参照ください。

OSS 外部テーブル構文

エンタープライズ、ベーシック、およびデータレイクハウス

Enterprise Edition、Basic Edition、および Data Lakehouse Edition における OSS 外部テーブルの作成構文については、「OSS 外部テーブル」をご参照ください。

データウェアハウス

OSS パーティションなし外部テーブル

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"
}';

外部テーブルタイプ

パラメーター

必須

説明

CSV、Parquet、および ORC 形式の外部テーブル

ENGINE='OSS'

はい

テーブルエンジン。値を OSS に設定します。

endpoint

OSS バケットの エンドポイントAnalyticDB for MySQL は現在、VPC ネットワーク経由でのみ OSS にアクセスできます。

説明

OSS コンソール にログインし、対象のバケットをクリックして、バケットの 概要 ページで エンドポイント を確認します。

url

OSS ファイルまたはディレクトリへのパス。

  • OSS ファイルの場合、絶対パスを指定します。例:oss://testBucketname/adb/oss_import_test_data.csv

  • ディレクトリパスは末尾にスラッシュ (/) を付ける必要があります。例:oss://testBucketname/adb/

    説明

    外部テーブルには、指定されたディレクトリ内のすべてのデータが含まれます。

  • パスの末尾にワイルドカード (*) を使用して、特定のプレフィックスを持つすべてのファイルまたはフォルダに一致させることができます。例:oss://testBucketname/adb/list_file_with_prefix/test*

    説明

    この例のワイルドカードは、プレフィックスに一致するすべてのファイルおよびフォルダに一致します。たとえば、oss://testBucketname/adb/list_file_with_prefix/testfile1 および

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

accessid

OSS 管理権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。

AccessKey ID の取得方法については、「アカウントと権限」をご参照ください。

accesskey

OSS 管理権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。

AccessKey Secret の取得方法については、「アカウントと権限」をご参照ください。

format

条件付き必須

ファイル形式。

  • Parquet 外部テーブルを作成する場合、このパラメーターを parquet に設定する必要があります。

  • ORC 外部テーブルを作成する場合、このパラメーターを orc に設定する必要があります。

  • Text 外部テーブルを作成する場合、このパラメーターを text に設定する必要があります。

  • このパラメーターを指定しない場合、デフォルトのファイル形式は csv になります。

    説明

    パラメーター値は大文字と小文字を区別します。

CSV および Text 形式の外部テーブル

delimiter|field_delimiter

はい

データファイルの列区切り文字。

  • ファイルタイプが csv の場合、パラメーター名は delimiter です。

  • ファイルタイプが text の場合、パラメーター名は field_delimiter です。

CSV 形式の外部テーブル

null_value

いいえ

CSV データファイル内で NULL 値を表す内容を定義します。デフォルトでは、空の値が NULL として扱われます。例:"null_value": ""

重要

このパラメーターには、カーネルバージョン 3.1.4.2 以降のクラスターが必要です。

ossnull

CSV データファイル内の NULL 値の解釈ルールを定義します。有効な値:

  • 1 (デフォルト):EMPTY_SEPARATORS。空の値のみを NULL として扱います。

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

  • 2EMPTY_QUOTES"" のみを NULL として扱います。

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

  • 3BOTH。空の値と "" の両方を NULL として扱います。

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

  • 4NEITHER。空の値も ""NULL として扱いません。

    例:a,"",,c --> "a","","","c"

説明

上記の例は、"null_value": "" を前提としています。

skip_header_line_count

データファイルの先頭からスキップする行数。たとえば、CSV ファイルにヘッダー行がある場合、これをスキップするためにこのパラメーターを 1 に設定します。

デフォルト値は 0 で、スキップする行がないことを示します。

oss_ignore_quote_and_escape

true に設定すると、フィールド値内の引用符とエスケープ文字が無視されます。デフォルトは false です。

重要

このパラメーターには、カーネルバージョン 3.1.4.2 以降のクラスターが必要です。

charset

OSS 外部テーブルの文字セット。有効な値:

  • utf-8 (デフォルト)

  • gbk

重要

このパラメーターには、カーネルバージョン 3.1.10.4 以降のクラスターが必要です。

説明
  • CREATE EXTERNAL TABLE 文のカラム名とその順序は、ソース Parquet または ORC ファイル内のものと一致している必要があります。カラム名は大文字と小文字を区別しません。

  • ソースファイルのカラムのサブセットを使用して外部テーブルを作成できます。CREATE EXTERNAL TABLE 文で指定されていないカラムは無視されます。

  • CREATE EXTERNAL TABLE 文に、Parquet または ORC ファイルに存在しないカラムが含まれている場合、そのカラムに対するクエリは NULL を返します。

AnalyticDB for MySQL は、CSV 形式の OSS 外部テーブルを使用して Hive TEXT ファイルの読み取りおよび書き込みが可能です。テーブルを作成するには、以下の文を使用します。

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
}';
説明

CSV 形式の OSS 外部テーブルを作成して Hive TEXT ファイルを読み取る際の注意点を以下に示します。

  • Hive TEXT ファイルのデフォルトの列区切り文字は \1 です。CSV 形式の OSS 外部テーブルを使用してこれらのファイルを読み取りまたは書き込みするには、delimiter パラメーターをエスケープされた値 \\1 に設定する必要があります。

  • Hive TEXT ファイルのデフォルトの NULL 値は \N です。CSV 形式の OSS 外部テーブルを使用してこれらのファイルを読み取りまたは書き込みするには、null_value パラメーターをエスケープされた値 \\\\N に設定する必要があります。

  • BOOLEAN などの他の基本的な Hive データ型は、AnalyticDB for MySQL データ型に直接マッピングされます。ただし、BINARYCHAR(n)、および VARCHAR(n) 型はすべて、AnalyticDB for MySQLVARCHAR 型にマッピングされます。

付録:データ型マッピング

重要
  • テーブル作成時に指定するデータ型は、以下の表のマッピングと一致している必要があります。DECIMAL 型の場合、精度も一致している必要があります。

  • Parquet 外部テーブルは STRUCT 型をサポートしていません。この型を使用すると、テーブル作成が失敗します。

  • ORC 外部テーブルは、LISTSTRUCT、および UNION などの複合型をサポートしていません。これらの型を使用すると、テーブル作成が失敗します。MAP 型のカラムを含む ORC 外部テーブルを作成することは可能ですが、そのテーブルに対するクエリは失敗します。

Parquet ファイルと AnalyticDB for MySQL のデータ型マッピング

Parquet プリミティブ型

Parquet 論理型

AnalyticDB for MySQL

BOOLEAN

なし

BOOLEAN

INT32

INT_8

TINYINT

INT32

INT_16

SMALLINT

INT32

なし

INT または INTEGER

INT64

なし

BIGINT

FLOAT

なし

FLOAT

DOUBLE

なし

DOUBLE

  • FIXED_LEN_BYTE_ARRAY

  • BINARY

  • INT64

  • INT32

DECIMAL

DECIMAL

BINARY

UTF-8

  • VARCHAR

  • STRING

  • JSON (Parquet カラムに JSON が含まれる場合)

INT32

DATE

DATE

INT64

TIMESTAMP_MILLIS

TIMESTAMP または DATETIME

INT96

なし

TIMESTAMP または DATETIME

ORC ファイルと AnalyticDB for MySQL のデータ型マッピング

ORC 型

AnalyticDB for MySQL

BOOLEAN

BOOLEAN

BYTE

TINYINT

SHORT

SMALLINT

INT

INT または INTEGER

LONG

BIGINT

DECIMAL

DECIMAL

FLOAT

FLOAT

DOUBLE

DOUBLE

  • BINARY

  • STRING

  • VARCHAR

  • VARCHAR

  • STRING

  • JSON (ORC カラムに JSON が含まれる場合)

TIMESTAMP

TIMESTAMP または DATETIME

DATE

DATE

Paimon ファイルと AnalyticDB for MySQL のデータ型マッピング

Paimon 型

AnalyticDB for MySQL

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

サポートされていません

TIMESTAMP

TIMESTAMP

LocalZonedTIMESTAMP

TIMESTAMP (ローカルタイムゾーン情報は無視)

ARRAY

ARRAY

MAP

MAP

ROW

ROW