开发者社区> 曾文旌> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

HybridDB for PG 中如何按照数据内容定制输出到 OSS 文件名和文件个数

简介: 使用HybridDB PG的外部表输出数据到OSS时,一般会输出成多个文件(文件个数一般与节点数个数一致)。如何输出为一个文件呢?步骤如下: 1)创建示例表: create table t3 (a1 text, a2 text ,a3 text, a4 text) distributed by (.
+关注继续查看

使用HybridDB PG的外部表输出数据到OSS时,一般会输出成多个文件(文件个数一般与节点数个数一致)。如何输出为一个文件呢?步骤如下:

1)创建示例表:

create table t3 (a1 text, a2 text ,a3 text, a4 text) distributed by (a1);

insert into t3 values('xxxxxxx','yyyyy','zzzzz','wwwww');
insert into t3 select * from test;
insert into t3 select * from test;
insert into t3 select * from test;
insert into t3 select * from test;
insert into t3 select * from test;
insert into t3 select * from test;

2)创建外部表写表,按源数据表的结构创建外部表。注意:

  • 相对于本地源表的表结构,需要添加一个临时字段,例如dummy_col,最好作为第一个字段。
  • 添加外部表参数 file_name_generator_col = dummy_col 指定临时字段名;output_generator_col=false 指定这个临时字段中的数据不写入到文件中
drop external table test_oss_write;
create writable external table test_oss_write(
  dummy_col text,
  A1  text,
  A2  text,
  A3  text,
  A4  text
)
location('oss://oss-cn-shanghai.aliyuncs.com 
dir=output_x_file/
id=xxx
key=xxx
bucket=osshuadong2 
output_generator_col=false 
file_name_generator_col=dummy_col
') FORMAT 'csv'  ( DELIMITER ',') 
distributed by (dummy_col)
;

3) 定制 SQL 将test数据写入到 oss 中

set rds_write_oss_file_by_distribution_column=on; 

insert into test_oss_write
Select key,a1,a2,a3,a4 from
(
select
  floor(random()*(5-1)+1)::int::text || 'e' as key,
  A1,A2,A3,A4   
  from t3
)t order by key;

注意:

  • 使用随机数来指定产生的文件个数,这里我们需要输出4个文件,则使用 floor(random()*(5-1)+1)
  • 写入文件时,给到写入节点的数据需要按照key有序,我们使用了order by, 也可以使用窗口函数。

最后OSS上能看到4个文件,且文件内容不包含用来定制文件名的虚拟列

$osscmd ls  oss://osshuadong2/output_x_file
prefix list is: 
object list is: 
2018-04-18 15:54:18 2.46KB Standard oss://osshuadong2/output_x_file/1e_577353258534704.1
2018-04-18 15:54:18 2.46KB Standard oss://osshuadong2/output_x_file/2e_577353258534704.2
2018-04-18 15:54:18 2.51KB Standard oss://osshuadong2/output_x_file/3e_577353258534704.2
2018-04-18 15:54:18 2.34KB Standard oss://osshuadong2/output_x_file/4e_577353258534704.1

osscmd get oss://osshuadong2/output_x_file/3e_577353258534704.2 b.txt

cat b.txt 
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww

使

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
oss 追加上传支持excel文件使用吗
oss 追加上传支持excel文件使用吗
0 0
使用OSS上传下载文件
阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可以提供多种用途,最简单的使用方式是做文件存储,用来上传下载文件啊
0 0
iOS开发:日志记录文件及压缩上传OSS
发现APP上传本地日志文件相当的好用,根据之前研究学习的对这一模块做了一些更具体的优化处理。从标题可以看出,实现这一功能分以下几个步骤: 1、日志记录本地文件 2、日志文件压缩[xx.zip] 3、压缩之后的文件上传 4、压缩文件删除
0 0
阿里云oss同步文件到本地,添加宝塔定时任务自动同步
阿里云oss同步文件到本地,添加宝塔定时任务自动同步
0 0
OSS restful API 调用 get,遍历目录中的文件,python发http request示例
发送get 请求,遍历目录下的所有文件,代码中*** 的部分改成实际内容,这个API说明文档在bucket操作里面。rest请求主要问题在拼header时authorization可能会有问题,注意计算签名时的入参。#tested env: python version v3.9.6 #author: Fred #2022-1-11 import hmac import hashlib impo
0 0
HDFS 海量文件归档到 OSS | 学习笔记
快速学习 HDFS 海量文件归档到 OSS。
0 0
高效迁移 HDFS 海量文件到 OSS | 学习笔记
快速学习高效迁移 HDFS 海量文件到 OSS。
0 0
通过ffplay播放OSS上的mp3文件会断开
抽丝剥茧定位一个疑难问题。
0 0
数据湖实操讲解【数据迁移】第三讲:如何将 HDFS 海量文件归档到OSS
数据湖 JindoFS+OSS 实操干货 36讲 每周二16点准时直播!扫文章底部二维码入钉群,线上准时观看~ Github链接: https://github.com/aliyun/alibabacloud-jindofs/blob/master/docs/jindo_distcp/jindo_distcp_overview.md
0 0
数据湖实操讲解【数据迁移】第一讲:高效迁移 HDFS 海量文件到 OSS
数据湖 JindoFS+OSS 实操干货 36讲 每周二16点准时直播!扫文章底部二维码入钉群,线上准时观看~
0 0
+关注
曾文旌
个人简介 曾文旌 阿里巴巴 RDS for PostgreSQL 数据库专家 目前在阿里云RDS 数据库内核服务组,负责PostgreSQL相关业务.
文章
问答
来源圈子
更多
让用户数据永远在线,让数据无缝的自由流动
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
百问百答-OSS (上)
立即下载
百问百答-OSS (下)
立即下载
阿里云 JindoFS+OSS 数据上云实战
立即下载