Inceptor常用SQL


1、創建數據庫
建一個數據庫exchange_platform。
DROP DATABASE IF EXISTS exchange_platform CASCADE;
CREATE DATABASE IF NOT EXISTS exchange_platform;

2、刪除數據庫
DROP DATABASE IF EXISTS exchange_platform;

3、修改 DBPROPERTIES
ALTER DATABASE exchange_platform
SET DBPROPERTIES ('date'= '2015-12');

4、修改數據庫owner
ALTER DATABASE exchange_platform
SET OWNER USER alice;
數據庫owner可以是Inceptor的用戶也可以是角色。

5、創建表
5.1、通過定義列建表
-- 將表建在當前數據庫中:
DROP TABLE IF EXISTS user_info_tab;
CREATE TABLE user_info_tab (
  name STRING,
  acc_num STRING,
  password STRING,
  citizen_id STRING,
  bank_acc STRING,
  reg_date DATE,
  acc_level STRING
);

-- 將表建在指定數據庫中:
DROP TABLE IF EXISTS exchange_platform.user_info;
CREATE TABLE exchange_platform.user_info (
  name STRING,
  acc_num STRING,
  password STRING,
  citizen_id STRING,
  bank_acc STRING,
  reg_date DATE,
  acc_level STRING
);

-- 建HDFS外表:
DROP TABLE IF EXISTS user_info_tab;
CREATE EXTERNAL TABLE user_info_tab (
  name STRING,
  acc_num STRING,
  password STRING,
  citizen_id STRING,
  bank_acc STRING,
  reg_date DATE,
  acc_level STRING
);
LOAD DATA LOCAL INPATH '/LOCALWORKSPACE/manual-ut/manual_data/manual_crud_tmp/user_info.txt'
OVERWRITE INTO TABLE user_info_tab;

5.2、通過拷貝表定義建表
DROP TABLE IF EXISTS exchange_platform.user_info;
CREATE TABLE IF NOT EXISTS exchange_platform.user_info
LIKE user_info;

5.3、CTAS
--用user_info表做為例子,user_info中含有帳戶密碼,身份證號碼和銀行帳戶等會影響帳戶安全的信息,現在用 CTAS 建一張不包含這些信息的表。
DROP TABLE IF EXISTS nonsecure_user_info ;
CREATE TABLE nonsecure_user_info
AS SELECT name, acc_num, reg_date, acc_level
FROM user_info;

6、刪除表
DROP TABLE [IF EXISTS] <table_name>;

7、修改表
7.1 重命名
ALTER TABLE <table_name> RENAME TO <new_table_name>;

7.2 修改或添加TBLPROPERTIES
-- 我們可以用這個語句給表添加和修改自定義的表屬性。
ALTER TABLE <table_name> SET TBLPROPERTIES ('<property_name>' = '<property_value>' ... );

7.3 修改或添加SERDEPROPERTIES
ALTER TABLE <table_name> SET SERDEPROPERTIES ('<property_name>' = '<property_value>' ... );

7.4 修改外表目錄
ALTER TABLE <table_name> SET LOCATION '<new_location>'; 
-- 將外表指向的HDFS目錄改為 <new_location>。注意,執行該操作的用戶必須是 <new_location> 的owner

8、清空表
-- TRUNCATE TABLE 清空表或者分區中的數據,但不刪除表或分區的元數據。這個操作只能用於托管表,不能用於外表。
8.1 清空表中數據
TRUNCATE TABLE user_info;

8.2 清空指定表中指定分區的數據
TRUNCATE TABLE user_info_part PARTITION (acc_level='A');

9、增加替換列
9.1 增加列
-- 可以將新的列加入表中,位置在所有列之后,分區之前。
DROP TABLE IF EXISTS test_change;
CREATE TABLE test_change (a INT, b INT, c INT);
-- 在表test_change中添加一個新列d,類型為INT
ALTER TABLE test_change ADD COLUMNS(d INT);

9.2 替換列
DROP TABLE IF EXISTS test_change;
CREATE TABLE test_change (a INT, b INT, c INT);
-- 將test_change中的列由(a INT, b INT, c INT)替換為(a int, b int)起到將列c刪除的效果
ALTER TABLE test_change
REPLACE COLUMNS (a INT, b INT);

10、視圖
10.1創建視圖
DROP VIEW IF EXISTS non_secure_info;
CREATE VIEW non_secure_info AS SELECT name, reg_date, acc_level FROM user_info;
-- 注意:不支持CREATE VIEW AS SELECT … UNION SELECT

10.2 刪除視圖
DROP VIEW [IF EXISTS] <view_name>;

11、導入數據
-- 將本地數據導入一張表
LOAD DATA LOCAL INPATH '/LOCALWORKSPACE/manualut/manual_data/manual_crud_tmp/user_info_table.txt'
INTO TABLE user_info2;

-- 將本地數據導入一張表下的分區
LOAD DATA LOCAL INPATH '/LOCALWORKSPACE/manualut/manual_data/manual_crud_tmp/user_info_table_A.txt'
INTO TABLE partition_user_info
PARTITION (acc_level = 'A');

-- 將HDFS上的數據導入一張表
LOAD DATA INPATH '/manual_crud_hdfs/user_info3/test'
INTO TABLE user_info2;

12、向表中插入數據
-- 一些常見的DML如 UPDATE, DELETE和 INSERT … VALUES只能對ORC事務表、Hyperbase內存表、ES 表使用。
-- 而INSERT … SELECT、SELECT則可以作用於任意類型的表
12.1 向表中插入數據並覆蓋原數據
INSERT OVERWRITE TABLE user_info2 SELECT * FROM user_info;

12.2 多次插入
-- 使用一個數據源可以將多個查詢結果插入不同表中。語法
FROM user_info    
INSERT INTO TABLE user_name SELECT name n    
INSERT OVERWRITE TABLE user_name_num SELECT name, acc_num ac     
INSERT INTO TABLE user_name_level SELECT name, acc_level;

13、向文件系統中插入數據
-- 寫入文件系統使用INSERT語句,但是不同於將數據INSERT進表中有INTO和OVERWRITE兩種選項,將數據寫入文件系統必須INSERT OVERWRITE。
13.1 將user_info中的內容寫入本地某目錄下。
INSERT OVERWRITE LOCAL DIRECTORY '/LOCALWORKSPACE/manual-ut/manual_data/user_info2/'
ROW FORMAT DELIMITED FIELDS TERMINATED BY'|'
SELECT * FROM user_info;

13.2 將user_info中的內容寫入HDFS上的目錄下
INSERT OVERWRITE DIRECTORY '/manual_crud_hdfs/user_info2/'
ROW FORMAT DELIMITED FIELDS TERMINATED BY'|'
SELECT * FROM user_info;

13.3 多插入
--在Inceptor中還可以用一個SQL語句將從一個數據源中檢索出來的多個結果插入不同文件和表中。
FROM user_info
INSERT OVERWRITE LOCAL DIRECTORY '/LOCALWORKSPACE/manual-ut/manual_data/user_info4/'SELECT name a 
INSERT OVERWRITE DIRECTORY '/manual_crud_hdfs/user_info5/'SELECT password b
INSERT INTO TABLE new_user SELECT name c
INSERT OVERWRITE TABLE user_name SELECT name d;

14、TEXT表
DROP TABLE IF EXISTS employee;
CREATE EXTERNAL TABLE employee (id INT, name STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/manual_crud_tmp/employee';
SELECT * FROM employee;

15、CSV表
DROP TABLE IF EXISTS csv_table;
CREATE EXTERNAL TABLE csv_table
(
  col1 STRING,
  col2 STRING,
  col3 STRING
)
STORED AS CSVFILE;
LOAD DATA LOCAL INPATH '/LOCALWORKSPACE/manual-ut/manual_data/manual_crud_tmp/csv1.txt'
OVERWRITE INTO TABLE csv_table;

16、ORC表
SET transaction.type=inceptor;
-- 創建非分區ORC表。
DROP TABLE IF EXISTS ta;
CREATE TABLE ta (name STRING, age INT)
CLUSTERED BY (age) INTO 2 BUCKETS
STORED AS ORC TBLPROPERTIES ("transactional"="true");
-- 創建非分區ORC表。
DROP TABLE IF EXISTS tg;
CREATE TABLE tg (name STRING, gpa DOUBLE) CLUSTERED BY (name) INTO 4 BUCKETS STORED AS ORC
TBLPROPERTIES ("transactional"="true");
-- 創建單值分區ORC表。
DROP TABLE IF EXISTS test;
CREATE TABLE test (a INT, b STRING, c DOUBLE) PARTITIONED BY (date STRING) CLUSTERED BY (c) INTO 8
BUCKETS STORED AS ORC TBLPROPERTIES ("transactional"="true");
-- 創建范圍分區ORC表。
DROP TABLE IF EXISTS t5;
CREATE TABLE t5(id INT, value INT) PARTITIONED BY RANGE(amount INT) (
PARTITION less1 VALUES LESS THAN (1),
PARTITION less10 VALUES LESS THAN (10),
PARTITION less100 VALUES LESS THAN (100) )
CLUSTERED BY (id) INTO 5 BUCKETS STORED AS ORC TBLPROPERTIES ("transactional"="true");
-- 桶的個數對事務處理的性能有關鍵性的影響,我們建議您設置合理的個數,
-- 一般是CPU個數的倍數,並且每個桶平均的大小控制不要超過200MB或者一百萬行記錄。

17、Holodesk表
--Holodesk普通建表
DROP TABLE IF EXISTS holodeskEmployee;
CREATE TABLE holodeskEmployee(
  ID INT,
  Region STRING,
  Sex VARCHAR(4),
  Department STRING,
  Salary DECIMAL
) STORED AS HOLODESK;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM