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", ...)]パラメーター | 説明 |
| データマージのタイプ。デフォルトでは、このパラメーターは |
| インポートするファイルのパス。 このパラメーターには複数の値を指定できます。ワイルドカードがサポートされています。指定するパスはファイルのパスである必要があります。パスがディレクトリのパスである場合、インポートは失敗します。 |
| このバッチのデータは負のメソッドでインポートされます。このメソッドは、SUM メソッドを使用して集計され、整数が含まれているテーブルにのみ適用できます。このメソッドでは、インポートされたデータの SUM メソッドで集計された列に対応する整数が反転され、インポートされたエラーデータが相殺されます。 |
| インポートするテーブルのパーティション。指定されたパーティションにないデータは無視されます。 |
| 列区切り文字。列区切り文字は、 |
| インポートするファイルの形式。有効な値: |
| ソースファイル内の列のソート順。詳細については、「ソースデータの変換」をご参照ください。 |
| インポートするファイルから抽出される列。 |
| データをフィルタリングするための事前設定条件。データは、 |
| 指定された列を変換するために使用される関数。 |
| インポートされたデータがフィルタリングされる条件。詳細については、「ソースデータの変換」をご参照ください。 |
| このパラメーターは、 |
| インポートするデータの sequence_col 列。このパラメーターは、Unique key モデルのテーブルにのみ適用でき、データのインポート時のデータシーケンスを保証します。 |
| インポートするファイルの形式を指定するパラメーター。インポートするファイルが |
次の表は、クラウドストレージサービスの構成に使用されるパラメーターについて説明しています。
パラメーター | 説明 |
| オブジェクトストレージ サービスのサービスプロバイダー。OSS に固定されています。 |
| アクセスする OSS データが存在するリージョン。 |
| OSS データにアクセスするために使用される 重要 OSS バケットと ApsaraDB for SelectDB インスタンス が同じリージョンにあることを確認してください。 |
| OSS データにアクセスするために使用される |
| OSS データにアクセスするために使用される |
次の表は、PROPERTIES のフィールドについて説明しています。
フィールド | 説明 |
| インポートジョブのタイムアウト期間。単位:秒。デフォルト値: |
| 除外できるデータの最大比率。たとえば、標準に準拠していないため、データが除外されます。デフォルト値: |
| インポートジョブで使用可能なメモリの最大サイズ。単位:バイト。デフォルト値: |
| インポートジョブの厳密モードを有効にするかどうかを指定します。デフォルト値: |
|
|
| 同時に実行できるインポートジョブの最大数。デフォルト値: |
| バッチ処理のためにデータを送信する同時ジョブの最大数。このパラメーターの値が BE 構成の |
| 対応するパーティションの 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");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.comOSS 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"];パラメーター
パラメーター | 説明 |
| データベースの名前。デフォルトでは、このパラメーターを指定しない場合、現在のデータベースが使用されます。 |
| インポートジョブの |
例
labelがexample_db_test_load_labelであるインポートジョブをexample_dbCANCEL 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];パラメーター
パラメーター | 説明 |
| データベースの名前。デフォルトでは、このパラメーターを指定しない場合、現在のデータベースが使用されます。 |
| インポートジョブの |
| インポートジョブのステータス。指定された状態のインポートジョブのみを表示できます。 |
| 返されるデータレコードのソート順。 |
| 表示されるデータレコード数の |
| クエリ結果の表示を開始する前にスキップする初期レコードの数。デフォルト値: |
例
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;