zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    AsyncTask下载图片
    POJ 2418-Hardwood Species(map)
    [Python] Understand List Comprehensions in Python
    [Python] isinstance() for checking object type
    [Python] Find available methods and help in REPL
    [Python] Execute a Python Script
    [Python] Understand Mutable vs. Immutable objects in Python
    [Python] Check for None (Null) in Python
    [Python] Manage Dependencies with Python Virtual Environments
    [React] Controlling Form Values with React
  • 原文地址:https://www.cnblogs.com/qfdy123/p/12108603.html
Copyright © 2011-2022 走看看