大數據計算服務(MaxCompute,原名ODPS,產品地址:
https://www.aliyun.com/product/odps
)是一種快速、完全托管的TB/PB級數據倉庫解決方案。MaxCompute向用戶提供了完善的數據導入方案以及多種經典的分布式計算模型,能夠更快速的解決用戶海量數據計算問題,有效降低企業成本,並保障數據安全。本文收錄了一些MaxCompute常用SQL、MR、Tunnel等語句,幫助您快速了解並使用MaxCompute/ODPS。
創建內部表
CREATE TABLE table_name (name string);
創建內部表,並指定分區字段
CREATE TABLE table_name (name string) PARTITIONED BY (ds string);
創建內部表,並指定生命周期
-
CREATE TABLE table_name (name string)
-
PARTITIONED BY (ds string) LIFECYCLE 365;
創建內部表,並從其他表導入數據
CREATE TABLE table_name AS SELECT * FROM table_name2 ;
創建內部表,並從其他表復制表結構
CREATE TABLE table_name LIKE table_name2
創建虛擬DUAL表
-- 創建表 CREATE TABLE IF NOT EXISTS dual ( value BIGINT COMMENT 'value' ) COMMENT 'dual'; -- 插入一條數據 INSERT OVERWRITE TABLE dual SELECT COUNT(*) FROM dual;
創建外部表
CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( a type, ) STORED BY 'com.aliyun.odps.CsvStorageHandler' -- (1) WITH SERDEPROPERTIES ( 'odps.properties.rolearn'='acs:ram::1811270634786818:role/aliyunodpsdefaultrole' ) -- (2) LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/oss-odps-test/Demo/'; -- (3)(4)
創建內部表,並判斷是否內布表是否已經存在
CREATE TABLE IF NOT EXISTS table_name (name string);
加了 IF NOT EXISTS ,sql執行的結果總是成功;如果沒加,表存在的情況下會返回失敗。
顯示所有表
SHOW TABLES;
顯示部分表
SHOW TABLES LIKE 'yinlin*';
顯示表分區
SHOW PARTITIONS <table_name>
表中添加一列
ALTER TABLE table_name ADD COLUMNS (col_name1 type1)
可以一次增加多個列
添加一列並增加列字段注釋
ALTER TABLE table_name ADD COLUMNS (test type COMMENT '測試');
更改表名
ALTER TABLE table_name RENAME TO new_table_name;
刪除表
DROP TABLE table_name;
修改列名
ALTER TABLE table_name CHANGE COLUMN old_col_name RENAME TO new_col_name;
刪除、修改列記錄
-
1、創建一張表,結果為預期的表結構; CREATE TABLE table2 (xxx); 2、把數據從原表導入到目標表,可以用SQL,比如: INSERT OVERWRITE TABLE table2 SELECT * FROM table1; 3、更換表名: ALTER TABLE table1 RENAME TO table1_bak; ALTER TABLE table2 RENAME TO table1;
將文件中的數據加載到表中
TUNNEL upload -fd '\t' c:\file.txt table_name;
將表數據導出到文件中
TUNNEL d table_name c:\file.txt;
查看表的描述
-
DESC table_name;
按條件查詢
SELECT * FROM table_name WHERE foo='';
統計數據總量
SELECT COUNT(1) FROM table_name;
將一個表的統計結果插入另一個表中
INSERT OVERWRITE TABLE table_name SELECT a.bar, count(1) FROM table_name a WHERE a.foo > 0 GROUP BY a.bar;