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

ApsaraDB for SelectDB:OSS Load を使用してデータをインポートする

最終更新日:Mar 10, 2025

ApsaraDB for SelectDB は Object Storage Service (OSS) と連携して、内部ネットワーク経由で高速インポート機能を提供します。この機能を使用すると、一度に数百 GB のデータをインポートできます。このトピックでは、OSS を使用して ApsaraDB for SelectDB インスタンスにデータをインポートする方法について説明します。

前提条件

  • AccessKey ペアを取得済みであること。詳細については、「AccessKey ペアを作成する」をご参照ください。

  • OSS がアクティブ化されており、OSS バケットが作成されていること。OSS バケットは、データをインポートする ApsaraDB for SelectDB インスタンスと同じリージョンにあること。詳細については、「OSS コンソールを使用して開始する」をご参照ください。

  • OSS バケットが ApsaraDB for SelectDB インスタンスと同じリージョンにあること。OSS は VPC 経由でアクセスできること。

データインポートの構文

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", ...
);
説明

ApsaraDB for SelectDB では、Amazon Simple Storage Service (Amazon S3) プロトコルと互換性のあるすべてのオブジェクトストレージシステムからデータをインポートできます。そのため、データをインポートするための構文では、AWS や S3 などのキーワードが使用されます。

パラメーター

data_desc1 パラメーターは、インポートするファイルのグループを記述するために使用されます。次のサンプル コードは、パラメーターの完全な定義を提供します。

[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", ...)]

パラメーター

説明

[MERGE|APPEND|DELETE]

データマージのタイプ。デフォルトでは、このパラメーターは APPEND に設定されており、既存のデータに新しいデータを追加します。このパラメーターを MERGE または DELETE に設定できるのは、Unique key モデルのテーブルを使用する場合のみです。このパラメーターを MERGE に設定する場合は、DELETE ON 文を使用して delete_flag 列を追加する必要があります。このパラメーターを DELETE に設定すると、このインポートジョブで指定されたデータが削除されます。

DATA INFILE

インポートするファイルのパス。

このパラメーターには複数の値を指定できます。ワイルドカードがサポートされています。指定するパスはファイルのパスである必要があります。パスがディレクトリのパスである場合、インポートは失敗します。

NEGTIVE

このバッチのデータは負のメソッドでインポートされます。このメソッドは、SUM メソッドを使用して集計され、整数が含まれているテーブルにのみ適用できます。このメソッドでは、インポートされたデータの SUM メソッドで集計された列に対応する整数が反転され、インポートされたエラーデータが相殺されます。

PARTITION(p1, p2, ...)

インポートするテーブルのパーティション。指定されたパーティションにないデータは無視されます。

COLUMNS TERMINATED BY

列区切り文字。列区切り文字は、CSV 形式のファイルでのみ有効であり、1 バイトである必要があります。

FORMAT AS

インポートするファイルの形式。有効な値: CSVPARQUETORC。デフォルト値: CSV

column list

ソースファイル内の列のソート順。詳細については、「ソースデータの変換」をご参照ください。

COLUMNS FROM PATH AS

インポートするファイルから抽出される列。

PRECEDING FILTER predicate

データをフィルタリングするための事前設定条件。データは、column list パラメーターと COLUMNS FROM PATH AS パラメーターの値に基づいて、ソースデータ行に順番にマージされます。その後、データは、データのフィルタリングに関するプリセット条件に基づいてフィルタリングされます。詳細については、「ソースデータの変換」をご参照ください。

SET (column_mapping)

指定された列を変換するために使用される関数。

WHERE predicate

インポートされたデータがフィルタリングされる条件。詳細については、「ソースデータの変換」をご参照ください。

DELETE ON expr

このパラメーターは、MEREGE タイプのデータマージと組み合わせて使用する必要があり、Unique key モデルのテーブルにのみ適用できます。このパラメーターは、delete_flag 列と、インポートするデータの計算関係を指定します。

ORDER BY

インポートするデータの sequence_col 列。このパラメーターは、Unique key モデルのテーブルにのみ適用でき、データのインポート時のデータシーケンスを保証します。

PROPERTIES ("key1"="value1", ...)

インポートするファイルの形式を指定するパラメーター。インポートするファイルが JSON 形式の場合は、json_rootjsonpathsfuzzy_parse などのパラメーターを指定できます。

次の表は、クラウドストレージサービスの構成に使用されるパラメーターについて説明しています。

パラメーター

説明

AWS_PROVIDER

オブジェクトストレージ サービスのサービスプロバイダー。OSS に固定されています。

AWS_REGION

アクセスする OSS データが存在するリージョン。

AWS_ENDPOINT

OSS データにアクセスするために使用される エンドポイント。エンドポイントの取得方法については、「リージョンとエンドポイント」をご参照ください。

重要

OSS バケットと ApsaraDB for SelectDB インスタンス が同じリージョンにあることを確認してください。

AWS_ACCESS_KEY

OSS データにアクセスするために使用される AccessKey ID

AWS_SECRET_KEY

OSS データにアクセスするために使用される AccessKey Secret

次の表は、PROPERTIES のフィールドについて説明しています。

フィールド

説明

timeout

インポートジョブのタイムアウト期間。単位:秒。デフォルト値: 14400(4 時間)。

max_filter_ratio

除外できるデータの最大比率。たとえば、標準に準拠していないため、データが除外されます。デフォルト値: 0。有効な値:0 ~ 1。

exec_mem_limit

インポートジョブで使用可能なメモリの最大サイズ。単位:バイト。デフォルト値: 2147483648(2 GiB)。

strict_mode

インポートジョブの厳密モードを有効にするかどうかを指定します。デフォルト値: false

timezone

strftime、alignment_timestamp、from_unixtime などのタイムゾーン関連関数のタイムゾーン。詳細については、「すべてのタイムゾーンのリスト」をご参照ください。デフォルト値: Asia/Shanghai

load_parallelism

同時に実行できるインポートジョブの最大数。デフォルト値: 1。このパラメーターを大きい値に設定して、複数のインポートジョブを同時に実行し、データインポートを高速化できます。

send_batch_parallelism

バッチ処理のためにデータを送信する同時ジョブの最大数。このパラメーターの値が BE 構成の max_send_batch_parallelism_per_job パラメーターの値よりも大きい場合、BE は max_send_batch_parallelism_per_job パラメーターの値を使用します。

load_to_single_tablet

対応するパーティションの 1 つのタブレットのみにデータをインポートするかどうかを指定します。デフォルト値: false。このパラメーターは、Duplicate key モデルでランダムパーティションを含むテーブルにデータをインポートする場合にのみ使用できます。モデル。

  1. ApsaraDB for SelectDB インスタンスでデータをインポートするテーブルを作成します。サンプルコード:

    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");
  2. test_file.txt という名前のインポートするファイルを作成します。サンプルコード:

    1,yang,32,shanghai,http://example.com
    2,wang,22,beijing,http://example.com
    3,xiao,23,shenzhen,http://example.com
    4,jess,45,hangzhou,http://example.com
    5,jack,14,shanghai,http://example.com
    6,tomy,25,hangzhou,http://example.com
    7,lucy,45,shanghai,http://example.com
    8,tengyin,26,shanghai,http://example.com
    9,wangli,27,shenzhen,http://example.com
    10,xiaohua,37,shanghai,http://example.com
  3. OSS Load を使用してデータをインポートします。サンプルコード:

    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"
    );
    
    説明

    OSS バケットのパスは s3:// で始まる必要があります。

OSS ロード ジョブのキャンセル

OSS Load ジョブが 場合ロード ジョブは CANCELLED または または FINISHED 状態ではない場合は、ジョブを手動でキャンセルできます。キャンセルするインポートジョブの 状態の場合、ジョブを手動でキャンセルできます。 label を指定する必要があります。インポートジョブがキャンセルされると、ジョブに書き込まれたデータはロールバックされ、有効になりません。 インポート ジョブのキャンセル対象です。インポート ジョブ

構文

CANCEL LOAD
[FROM db_name]
WHERE [LABEL = "load_label" | LABEL like "label_pattern"];

パラメーター

パラメーター

説明

db_name

データベースの名前。デフォルトでは、このパラメーターを指定しない場合、現在のデータベースが使用されます。

load_label

インポートジョブの label。完全一致がサポートされています。 LABEL LIKE 文を使用すると、labelslabel_pattern が含まれるインポートジョブが一致となります。

  • labelexample_db_test_load_label であるインポートジョブを example_db

    CANCEL LOAD
    FROM example_db
    WHERE LABEL = "example_db_test_load_label";
  • example_db データベースで、ラベルに example_ が含まれるインポートジョブをキャンセルします。

    CANCEL LOAD
    FROM example_db
    WHERE LABEL like "example_";

データ インポート ジョブを表示する

OSS Load は非同期データインポート方式です。データインポート文が正常に実行されると、OSS Load ジョブは正常にコミットされますが、データはインポートされない場合があります。Broker Load ジョブのステータスを照会するには、SHOW LOAD 文を実行します。

構文

SHOW LOAD
[FROM db_name]
[
   WHERE
   [LABEL [ = "your_label" | LIKE "label_matcher"]]
   [STATE = ["PENDING"|"ETL"|"LOADING"|"FINISHED"|"CANCELLED"|]]
]
[ORDER BY ...]
[LIMIT limit][OFFSET offset];

パラメーター

パラメーター

説明

db_name

データベースの名前。デフォルトでは、このパラメーターを指定しない場合、現在のデータベースが使用されます。

your_label

インポートジョブの label。完全一致がサポートされています。 LABEL LIKE 文を使用すると、labelslabel_matcher が含まれるインポートジョブが一致となります。

STATE

インポートジョブのステータス。指定された状態のインポートジョブのみを表示できます。

ORDER BY

返されるデータレコードのソート順。

LIMIT

表示されるデータレコード数の limit。このパラメーターを指定しない場合、すべてのデータレコードが表示されます。

OFFSET

クエリ結果の表示を開始する前にスキップする初期レコードの数。デフォルト値: 0

  • example_db データベースで、ラベルに 2014_01_02 が含まれるインポートジョブを照会し、最も長く保存されている 10 件のインポートジョブを表示します。

    SHOW LOAD FROM example_db WHERE LABEL LIKE "2014_01_02" LIMIT 10;
  • example_dbexample_dbLoadStartTime データベースで、ラベルが

    SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" ORDER BY LoadStartTime DESC;
  • example_db データベースで、読み込み状態であり、ラベルが load_example_db_20140102 であるインポートジョブを照会します。

    SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" AND STATE = "loading";
  • example_db データベースのインポートジョブを照会し、これらのジョブを LoadStartTime の降順でソートします。最初の 5 つのクエリ結果をスキップし、次の 10 個のクエリ結果を表示します。

    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;