MaxCompute常用语句汇总(更新ing)
摘要: 收集一些MaxCompute常用命令。
点此查看原文:http://click.aliyun.com/m/41645/
大数据计算服务(MaxCompute,原名ODPS,产品地址:https://www.aliyun.com/product/odps)是一种快速、完全托管的TB/PB级数据仓库解决方案。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。本文收录了一些MaxCompute常用SQL、MR、Tunnel等语句,帮助您快速了解并使用MaxCompute/ODPS。
创建内部表
CREATETABLEtable_name (name string);
创建内部表,并指定分区字段
CREATETABLEtable_name (name string) PARTITIONED BY(ds string);
创建内部表,并指定生命周期
CREATETABLEtable_name (name string) PARTITIONED BY(ds string) LIFECYCLE 365;
创建内部表,并从其他表导入数据
CREATETABLEtable_name ASSELECT* FROMtable_name2 ;
创建内部表,并从其他表复制表结构
CREATETABLEtable_name LIKEtable_name2 ;
创建虚拟DUAL表
-- 创建表CREATETABLEIFNOTEXISTSdual ( valueBIGINT COMMENT 'value') COMMENT 'dual';-- 插入一条数据INSERTOVERWRITE TABLEdual SELECTCOUNT(*) FROMdual;
创建外部表
CREATEEXTERNALTABLEIFNOTEXISTStable_name ( a type, ) STORED BY'com.aliyun.odps.CsvStorageHandler'-- (1) WITHSERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::1811270634786818:role/aliyunodpsdefaultrole') -- (2) LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/oss-odps-test/Demo/';-- (3)(4)
创建内部表,并判断是否内布表是否已经存在
CREATETABLEIFNOTEXISTStable_name (name string);
加了 IF NOT EXISTS ,sql执行的结果总是成功;如果没加,表存在的情况下会返回失败。
显示所有表
SHOWTABLES;
显示部分表
SHOWTABLES LIKE'yinlin*';
显示表分区
SHOW PARTITIONS <table_name>
表中添加一列
ALTERTABLEtable_name ADDCOLUMNS (col_name1 type1)
可以一次增加多个列
添加一列并增加列字段注释
ALTERTABLEtable_name ADDCOLUMNS (test type COMMENT '测试');
更改表名
ALTERTABLEtable_name RENAME TOnew_table_name;
删除表
DROPTABLEtable_name;
修改列名
ALTERTABLEtable_name CHANGE COLUMNold_col_name RENAME TOnew_col_name;
删除、修改列记录
1、创建一张表,结果为预期的表结构;
CREATETABLEtable2 (xxx);
2、把数据从原表导入到目标表,可以用SQL,比如:
INSERTOVERWRITE TABLEtable2 SELECT* FROMtable1;
3、更换表名:
ALTERTABLEtable1 RENAME TOtable1_bak;ALTERTABLEtable2 RENAME TOtable1;
将文件中的数据加载到表中
TUNNEL upload -fd ' \t' c: \file.txt table_name;
将表数据导出到文件中
TUNNEL d table_name c:\file .txt;
查看表的描述
DESCtable_name;
按条件查询
SELECT* FROMtable_name WHEREfoo='';
统计数据总量
SELECTCOUNT(1) FROMtable_name;
将一个表的统计结果插入另一个表中
INSERTOVERWRITE TABLEtable_name SELECTa.bar, count(1) FROMtable_name a WHEREa.foo > 0GROUPBYa.bar;
欢迎大家补充…
https://yq.aliyun.com/ask/59888