云數據庫 SelectDB 版結合OSS對象存儲提供了內網高速導入功能,且單次導入數據量可達百GB級別。本文介紹如何通過OSS Load導入數據至云數據庫 SelectDB 版實例中。
前提條件
已獲取AccessKey信息。具體操作,請參見創建AccessKey。
已開通OSS服務,并創建與云數據庫 SelectDB 版實例位于相同地域的存儲空間(Bucket)。具體操作,請參見開通OSS服務和創建存儲空間。
請確保OSS存儲空間(Bucket)與云數據庫 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協議的對象存儲系統中導入數據,因此導入語法中采用了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的一些參數。如導入的文件是 |
云存儲服務配置參數說明如下。
參數名稱 | 參數說明 |
| 對象存儲的服務提供商,固定為OSS。 |
| 訪問OSS數據的地域。 |
| 訪問OSS數據的 重要 請確保OSS存儲空間(Bucket)與您的云數據庫 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" );
說明對象存儲的路徑固定以“s3://”開頭。