更新时间:2022-07-29 GMT+08:00
执行导入数据
背景信息
在执行数据导入前,您可以参考以下优秀实践方法进行合理的设计部署,最大化的使用系统资源,以提高数据导入性能。
- OBS的数据导入性能,多数场景受限于网络的并发访问速率,因此在OBS服务器上最好部署多个桶,使用多桶并发导入,提高DN数据传输利用率。
- 并发导入场景,与单表导入相似,至少应保证I/O性能大于网络最大速率。
- 配置GUC参数“raise_errors_if_no_files”、“partition_mem_batch”和“partition_max_cache_size”,设置导入时是否区分“导入文件记录数为空”和“导入文件不存在”、导入时的缓存个数以及数据缓存区大小。
- 若导入表存在索引,在数据导入过程中,将增量更新索引信息,影响数据导入性能。建议在执行数据导入前,先删除相关表的索引。在数据导入完成后,再重新创建索引。
操作步骤
- 在GaussDB(DWS)数据库中,创建目标表,用于存储从OBS导入的数据。建表语法请参考CREATE TABLE。
目标表的表结构和OBS上将要导入的数据源文件的字段要保持一一对应,即字段个数、字段类型要一致。并且,目标表和创建的外表的表结构也要保持一致,字段名称可以不一样。
- (可选)若导入表存在索引,在数据导入过程中,将增量更新索引信息,影响数据导入性能。建议在执行数据导入前,先删除相关表的索引。在数据导入完成后,再重新创建索引。
- 执行数据导入。
1
INSERT INTO [目标表名] SELECT * FROM [foreign table 表名];
示例
创建一个名为product_info的表,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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);
|
执行以下命令将外表product_info_ext的数据导入到目标表product_info 中:
1 |
INSERT INTO product_info SELECT * FROM product_info_ext;
|
父主题: 从OBS导入CSV,TXT数据