全部產品
Search
文件中心

ApsaraDB for SelectDB:OSS Load

更新時間:Jul 06, 2024

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

參數名稱

參數說明

[MERGE|APPEND|DELETE]

資料合併類型,預設為APPEND,表示本次匯入是普通的追加寫操作MERGEDELETE類型僅適用於Unique Key模型表。其中MERGE類型需要配合[DELETE ON]語句使用,以標註Delete Flag列。而DELETE類型則表示本次匯入的所有資料皆為刪除資料。

DATA INFILE

指定需要匯入的檔案路徑。

可以是多個,可以使用萬用字元。路徑最終必須匹配到檔案,如果只匹配到目錄則匯入會失敗。

NEGTIVE

本次匯入為一批”負“匯入。這種方式僅針對具有整型SUM彙總類型的彙總資料表。該方式會將匯入資料中,SUM彙總列對應的整型數值取反。主要用於沖抵之前置入錯誤的資料。

PARTITION(p1, p2, ...)

指定僅匯入表的某些分區,不在分區範圍內的資料將被忽略。

COLUMNS TERMINATED BY

指定資料行分隔符號。僅在CSV格式下有效,僅支援單位元組分隔字元。

FORMAT AS

指定檔案類型,支援CSVPARQUETORC格式,預設為CSV

column list

用於指定原始檔案中的列順序。詳細資料,請參見資料轉換

COLUMNS FROM PATH AS

指定從匯入檔案路徑中抽取的列。

PRECEDING FILTER predicate

前置過濾條件。資料首先根據column listCOLUMNS FROM PATH AS按順序拼接成未經處理資料行。然後按照前置過濾條件進行過濾。詳細資料,請參見資料轉換

SET (column_mapping)

指定列的轉換函式。

WHERE predicate

根據條件對匯入的資料進行過濾。詳細資料,請參見資料轉換

DELETE ON expr

需配合MEREGE匯入模式一起使用,僅針對Unique Key模型的表。用於指定匯入資料中表示Delete Flag的列和計算關係。

ORDER BY

僅針對Unique Key模型的表。用於指定匯入資料中表示Sequence Col的列。主要用於匯入時保證資料順序。

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

指定匯入的format的一些參數。如匯入的檔案是JSON格式,則可以在這裡指定json_rootjsonpathsfuzzy_parse等參數。

雲端儲存體服務配置參數說明如下。

參數名稱

參數說明

AWS_PROVIDER

Object Storage Service的服務提供者,固定為OSS。

AWS_REGION

訪問OSS資料的地區。

AWS_ENDPOINT

訪問OSS資料的Endpoint。如何擷取,請參見訪問網域名稱和資料中心

重要

請確保OSS儲存空間(Bucket)與您的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

匯入記憶體限制,單位:Byte,預設為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

是否只匯入資料到對應分區的一個tablet,預設值為false。該參數只允許在對帶有random分區的Duplicate表匯入資料的時候設定。

使用樣本

  1. 建立待匯入的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"
    );
    
    說明

    Object Storage Service的路徑固定以“s3://”開頭