华为云首页
用户手册
数据仓库服务 GAUSSDB(DWS)-导入OBS桶数据到GaussDB(DWS)集群及从GaussDB(DWS)导出数据到OBS桶:步骤四:将GaussDB(DWS)某张表的数据导出到OBS桶
数据仓库服务 GAUSSDB(DWS)-导入OBS桶数据到GaussDB(DWS)集群及从GaussDB(DWS)导出数据到OBS桶:步骤四:将GaussDB(DWS)某张表的数据导出到OBS桶
时间:2025-04-28 11:16:58
步骤四:将 GaussDB (DWS)某张表的数据导出到OBS桶
- 创建一张新的本地表。
1 2 3 4 5 6 7
CREATE TABLE dws_data.dws_order ( order_idVARCHAR(14)PRIMARY KEY, order_channel VARCHAR(32), order_timeTIMESTAMP, cust_codeVARCHAR(6), pay_amountDOUBLE PRECISION, real_payDOUBLE PRECISION );
- 插入三条数据。
1 2 3 4
INSERT INTO dws_data.dws_order VALUES ('20230627000001', 'webShop', TIMESTAMP '2023-06-27 10:00:00', 'CUST1', 1000, 1000) , ('20230627000002', 'webShop', TIMESTAMP '2023-06-27 11:00:00', 'CUST2', 5000, 5000) , ('20240309000003', 'webShop', TIMESTAMP '2024-03-09 13:00:00', 'CUST1', 2000, 2000);
- 创一张外表,用于导出数据到OBS桶。
其中foldername '/obs-demo01/obs-dws/'请替换为实际需要导出的OBS桶路径。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
CREATE FOREIGN TABLE dws_data.obs_orc_order ( order_idVARCHAR(14)PRIMARY KEY NOT ENFORCED, order_channel VARCHAR(32), order_timeTIMESTAMP, cust_codeVARCHAR(6), pay_amountDOUBLE PRECISION, real_payDOUBLE PRECISION ) SERVER obs_server OPTIONS ( foldername '/obs-demo01/obs-dws/', format 'ORC', encoding 'utf8' ) WRITE ONLY DISTRIBUTE BY roundrobin;
- 执行以下语句,将本地表数据写入OBS外表。
1 2 3
INSERT INTO dws_data.obs_orc_order ( order_id, order_channel, order_time, cust_code, pay_amount, real_pay ) SELECT order_id, order_channel, order_time, cust_code, pay_amount, real_pay FROM dws_data.dws_order;
- 查询外表,数据写入成功。
1
SELECT * FROM dws_data.obs_orc_order;
- 成功写入后,您可以登录OBS控制台,查看OBS桶对应路径下是否有数据文件存在。
- 同时可以验证下,是否允许同一张外表下额外插入数据。
1 2 3
INSERT INTO dws_data.obs_orc_order ( order_id, order_channel, order_time, cust_code, pay_amount, real_pay ) SELECT order_id, order_channel, order_time, cust_code, pay_amount, real_pay FROM dws_data.dws_order;
结果会报错:“the file path specified in the foreign table is not empty”,但如果删除外表中指定的OBS文件路径下的数据文件后,可以重新插入数据。
- 执行以下语句,验证下是否允许更新和删除外表数据。
1 2
UPDATE dws_data.obs_orc_order SET pay_amount = 3000, real_pay = 3000 WHERE order_id = '20240309000003'; DELETE FROM dws_data.obs_orc_order WHERE order_id = '20240309000003';
从显示结果看,不支持更新和删除外表数据。
support.huaweicloud.com/bestpractice-dws/dws_05_0024.html
推荐文章