教程指引
說明l? ACCESS_KEY和SECRET_ACCESS_KEY
用戶訪問OBS的AK和SK,請根據實際替換。獲取訪問密鑰的具體步驟,請參見“常見問題-通用問題”中的“如何獲取Access Key ID(AK)和 Secret Access Key(SK)”
本教程旨在通過演示將樣例數據上傳OBS,及將OBS的數據導入進DWS上的目標表中,讓您快速掌握如何從OBS導入數據到DWS集群的完整過程。
在本教程中,您將:
- 生成CSV格式的數據文件。
- 創建一個與DWS集群在同一區域的OBS存儲桶,然后將數據文件上傳到該存儲桶。
- 創建外表,用于引流OBS存儲桶中的數據到DWS集群。
- 啟動DWS并創建數據庫表后,將OBS上的數據導入到表中。
- 根據錯誤表中的提示診斷加載錯誤并更正這些錯誤。
估計時間:30分鐘
準備數據源文件
- 數據文件“product_info0.csv”
100,XHDK-A,2017-09-01,A,2017 Shirt Women,red,M,328,2017-09-04,715,good!
205,KDKE-B,2017-09-01,A,2017 T-shirt Women,pink,L,584,2017-09-05,40,very good!
300,JODL-X,2017-09-01,A,2017 T-shirt men,red,XL,15,2017-09-03,502,Bad.
310,QQPX-R,2017-09-02,B,2017 jacket women,red,L,411,2017-09-05,436,It's nice.
150,ABEF-C,2017-09-03,B,2017 Jeans Women,blue,M,123,2017-09-06,120,good.
- 數據文件“product_info1.csv”
200,BCQP-E,2017-09-04,B,2017 casual pants men,black,L,997,2017-09-10,301,good quality.
250,EABE-D,2017-09-10,A,2017 dress women,black,S,841,2017-09-15,299,This dress fits well.
108,CDXK-F,2017-09-11,A,2017 dress women,red,M,85,2017-09-14,22,It's really amazing to buy.
450,MMCE-H,2017-09-11,A,2017 jacket women,white,M,114,2017-09-14,22,very good.
260,OCDA-G,2017-09-12,B,2017 woolen coat women,red,L,2004,2017-09-15,826,Very comfortable.
- 數據文件“product_info2.csv”
980,"ZKDS-J",2017-09-13,"B","2017 Women's Cotton Clothing","red","M",112,,,
98,"FKQB-I",2017-09-15,"B","2017 new shoes men","red","M",4345,2017-09-18,5473
50,"DMQY-K",2017-09-21,"A","2017 pants men","red","37",28,2017-09-25,58,"good","good","good"
80,"GKLW-l",2017-09-22,"A","2017 Jeans Men","red","39",58,2017-09-25,72,"Very comfortable."
30,"HWEC-L",2017-09-23,"A","2017 shoes women","red","M",403,2017-09-26,607,"good!"
40,"IQPD-M",2017-09-24,"B","2017 new pants Women","red","M",35,2017-09-27,52,"very good."
50,"LPEC-N",2017-09-25,"B","2017 dress Women","red","M",29,2017-09-28,47,"not good at all."
60,"NQAB-O",2017-09-26,"B","2017 jacket women","red","S",69,2017-09-29,70,"It's beautiful."
70,"HWNB-P",2017-09-27,"B","2017 jacket women","red","L",30,2017-09-30,55,"I like it so much"
80,"JKHU-Q",2017-09-29,"C","2017 T-shirt","red","M",90,2017-10-02,82,"very good."
1.新建文本文檔并使用本地編輯工具(例如Visual Studio Code)打開后,將示例數據拷貝進文本文檔中。
2.選擇“格式>以UTF-8無BOM格式編碼”。
3.選擇“文件>另存為”。
4.在彈出的對話框中輸入文件名后,將文件后綴設為.csv,單擊“保存”。
上傳數據到OBS
1.將上面準備的3個CSV格式的數據源文件存儲到OBS桶中。
a.登錄OBS管理控制臺。
單擊“服務列表”,選擇“對象存儲服務”,打開OBS管理控制臺頁面。
b.創建桶。
例如,創建以下兩個桶:“mybucket”和“mybucket02”。

注意確保這兩個桶與DWS集群在同一個區域。
c.新建文件夾。
例如:
?在已創建的OBS桶“mybucket”中新建一個文件夾“input_data”。
?在已創建的OBS桶“mybucket02”中新建一個文件夾“input_data”。
d.上傳文件。
例如:
?將以下數據文件上傳到OBS桶“mybucket”的“input_data”目錄中。
product_info0.csv
product_info1.csv
?將以下數據文件上傳到OBS桶“mybucket02”的“input_data”目錄中。
product_info2.csv
2.為導入用戶設置OBS桶的讀取權限。
在從OBS導入數據到集群時,執行導入操作的用戶需要取得數據源文件所在OBS桶的讀取權限。通過配置桶的ACL權限,可以將讀取權限授予指定的用戶帳號。
創建外表
1.連接DWS數據庫。
2.創建外表。
說明
l? ACCESS_KEY和SECRET_ACCESS_KEY
用戶訪問OBS的AK和SK,請根據實際替換。獲取訪問密鑰的具體步驟,請參見“常見問題-通用問題”中的“如何獲取Access Key ID(AK)和 Secret Access Key(SK)”。

DROP FOREIGN TABLE IF EXISTS product_info_ext;
CREATE FOREIGN TABLE product_info_ext
(
product_price integer not null,
product_id char(30) not null,
product_time date ,
product_level char(10) ,
product_name varchar(200) ,
product_type1 varchar(20) ,
product_type2 char(10) ,
product_monthly_sales_cnt integer ,
product_comment_time date ,
product_comment_num integer ,
product_comment_content varchar(200)
)
SERVER gsmpp_server
OPTIONS(
LOCATION 'obs://mybucket/input_data/product_info | obs://mybucket02/input_data/product_info',
FORMAT 'CSV' ,
DELIMITER ',',
ENCODING 'utf8',
HEADER 'false',
ACCESS_KEY 'access_key_value_to_be_replaced',
SECRET_ACCESS_KEY 'secret_access_key_value_to_be_replaced',
FILL_MISSING_FIELDS 'true',
IGNORE_EXTRA_DATA 'true'
)
READ ONLY
LOG INTO product_info_err
PER NODE REJECT LIMIT 'unlimited';
返回如下信息表示創建成功:
CREATE FOREIGN TABLE
執行數據導入
1.在DWS數據庫中,創建一個名為product_info的表,用于存儲從OBS導入的數據。
DROP TABLE IF EXISTS product_info;
CREATE TABLE product_info
(
product_price integer not null,
product_id char(30) not null,
product_time date ,
product_level char(10) ,
product_name varchar(200) ,
product_type1 varchar(20) ,
product_type2 char(10) ,
product_monthly_sales_cnt integer ,
product_comment_time date ,
product_comment_num integer ,
product_comment_content varchar(200)
)
WITH (
orientation = column,
compression=middle
)
DISTRIBUTE BY hash (product_id);
2.執行INSERT命令,通過外表product_info_ext將OBS上的數據導入到目標表product_info 中:
INSERT INTO product_info SELECT * FROM product_info_ext;
3.執行SELECT命令查詢目標表product_info,查看從OBS導入到DWS中的數據。
SELECT * FROM product_info;
查詢結果的結尾將顯示以下信息:
(20 rows)
4.對表product_info執行VACUUM FULL。
VACUUM FULL product_info;
5.更新表product_info的統計信息。
ANALYZE product_info;
清除資源
1.如果執行了導入數據后查詢數據,請執行以下命令,刪除目標表。
DROP TABLE product_info;
當結果顯示為如下信息,則表示刪除成功。
DROP TABLE
2.執行以下命令,刪除外表。
DROP FOREIGN TABLE product_info_ext;
當結果顯示為如下信息,則表示刪除成功。
DROP FOREIGN TABLE