ApsaraDB for SelectDB結合OSSObject Storage Service提供了內網高速匯入功能,且單次匯入資料量可達百GB層級。本文介紹如何通過OSS Load匯入資料至雲資料庫 SelectDB 版執行個體中。
前提條件
已擷取AccessKey資訊。具體操作,請參見建立AccessKey。
已開通OSS服務,並建立與ApsaraDB for SelectDB執行個體位於相同地區的儲存空間(Bucket)。具體操作,請參見開通OSS服務和建立儲存空間。
請確保OSS儲存空間(Bucket)與ApsaraDB for SelectDB執行個體在同一地區,並使用阿里雲VPC網路訪問OSS。
匯入文法
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", ...
);
雲資料庫 SelectDB 版支援從所有相容AWS S3協議的Object Storage Service系統中匯入資料,因此匯入文法中採用了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彙總列對應的整型數值取反。主要用於沖抵之前置入錯誤的資料。 |
| 指定僅匯入表的某些分區,不在分區範圍內的資料將被忽略。 |
| 指定資料行分隔符號。僅在 |
| 指定檔案類型,支援 |
| 用於指定原始檔案中的列順序。詳細資料,請參見資料轉換。 |
| 指定從匯入檔案路徑中抽取的列。 |
| 前置過濾條件。資料首先根據 |
| 指定列的轉換函式。 |
| 根據條件對匯入的資料進行過濾。詳細資料,請參見資料轉換。 |
| 需配合 |
| 僅針對Unique Key模型的表。用於指定匯入資料中表示Sequence Col的列。主要用於匯入時保證資料順序。 |
| 指定匯入的format的一些參數。如匯入的檔案是 |
雲端儲存體服務配置參數說明如下。
參數名稱 | 參數說明 |
| Object Storage Service的服務提供者,固定為OSS。 |
| 訪問OSS資料的地區。 |
| 訪問OSS資料的 重要 請確保OSS儲存空間(Bucket)與您的ApsaraDB for SelectDB執行個體在同一地區。 |
| 訪問OSS資料的 |
| 訪問OSS資料的 |
PROPERTIES
的常用參數定義如下。
參數名稱 | 參數說明 |
| 匯入逾時時間,單位:秒,預設為 |
| 最大容忍可過濾(資料不規範等原因)的資料比例。預設為 |
| 匯入記憶體限制,單位:Byte,預設為 |
| 是否對資料進行嚴格限制,預設為 |
| 指定某些受時區影響的函數的時區,如 |
| 匯入並發度,預設為 |
| 用於設定發送批處理資料的並行度,如果並行度的值超過BE配置中的 |
| 是否只匯入資料到對應分區的一個tablet,預設值為 |
使用樣本
建立待匯入的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.com
通過以下方式進行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" );
說明Object Storage Service的路徑固定以“s3://”開頭。