从分析性数据库ADS中导出数据

ADS是阿里云提供的分析性数据库,实现百亿数据毫秒级计算。
将ADS中的数据导出,有2种思路,通过select或dump实现。这两种方法各有优缺点。

select导出

因为ADS支持MySQL客户端,通过客户端,可以编写select进行数据导入。
在这个过程中需要解决1个问题:
  • select在公共云上查询的返回行数最大为10000行,所以无法通过select无法一次获取所有的数据
如果想通过分区的方式,分多次,一次10000行将数据导出,需要解决分区的问题:
  • limit语法只支持[0,n],不支持[m,n]
  • 没有提供rownum或者其它可以获取行数的函数

所以,使用select的方式还是挺麻烦的。


dump导出

语法

dump可以导出海量的数据,语法如下:

 DUMP DATA
    [OVERWRITE] INTO 'odps://project_name/table_name'
    SELECT C1, C2 FROM DB1.TABLE1 WHERE C1 = 'xxxx' LIMIT 100000

在导入之前需要先在ODPS对garuda_data@aliyun.com赋权,

对于项目,需要createInstance权限,

对于目的表,需要describe、select、alter、update、drop权限。

例子

ODPS中操作:
add user aliyun$garuda_data@aliyun.com;
grant createinstance on project project_test to user aliyun$garuda_data@aliyun.com;
grant describe,select,alter,update,drop on table ads_test to user aliyun$garuda_data@aliyun.com;

ADS中操作:
DUMP DATA
    OVERWRITE INTO 'odps://project_test/ads_test'
    SELECT book_name,line_no,contents FROM d_novel_b


总结

通过导入导出操作,可以看出ADS和ODPS联系很紧密。

上一篇:企业部署Office2010解决方案


下一篇:DataX插件编写指南