MaxCompute-批量导出项目空间的建表语句(DDL)
项目背景
最近需要做项目空间的数据备份,包括表结构(建表语句),以便在系统出现问题时,或者数据丢失时进行恢复。
所遇问题
前面我介绍过MaxCompute的备份和恢复方案,但是关于导出建表语句,咨询了很多人都不知道如何批量导出。大部分人给我的答复是,通过desc tablename可以查看建表语句,这个我当然知道。在dataworks的“数据地图”中查看某个表时,进入“明细信息”>“字段信息”>“字段信息”页面,点击“生成DDL”可以看到建表语句。咨询了阿里的人,他们反馈这里是根据元仓表m_table、m_column等表临时生成的DDL。后来自己查询资料,终于发现了批量导出项目空间的建表语句的方法。下面分享给大家。
export批量导出建表语句
1、下载MaxCompute客户端安装包。
odpscmd_public.zip
2、将MaxCompute客户端安装包上传到ECS服务器上。
3、解压服务器上的安装包odpscmd_public.zip。
unzip odpscmd_public.zip
4、进入conf文件夹,配置odps_config.ini文件。
编辑如下相关信息。
project_name=my_project
access_id=*******************
access_key=*********************
end_point= <MaxCompute服务地址>
说明:
(1)access_id和access_key是用户的云账号信息。其中,access_id对应AccessKey ID,access_key对应AccessKey Secret。
(2)project_name=my_project的作用是指定您想进入的项目空间。一旦配置此项,每次登录客户端,将会默认进入到该项目空间。如果不配置, 登录客户端后,必须使用 use project_name 命令进入项目空间。
(3)end_point需要配置成MaxCompute提供给用户的服务地址。针对不同的用户,服务地址也不同。
5、运行MaxCompute客户端
在系统的命令行执行窗口,进入MaxCompute客户端安装路径下的bin目录,执行sh odpscmd,即可启动MaxCompute客户端。
返回如下信息,表明已成功连接MaxCompute项目。
6、通过export命令导出项目空间的建表语句
export table <tablename> ;
export <projectname> <local_path> [-rftpd] ;
说明:-r #表示resource,项目空间中的资源,比如Jar包。
-f #表示function,项目空间中的函数DDL
-t #表示table, 项目空间中表的DDL
-p #表示partition,项目空间中添加删除分区的DDL
-d #表示drop,项目空间中删除表的DDL
执行下图的命令后会在当前路径生成”smoke”文件夹,里边会有下载下来的数据字典,resource等.
导出完成后,可以看到当前目录中新生成了一个“smoke”的文件夹。
进去查看下,project_odps_sqls.dump中包含项目空间的所有建表语句。