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