spark对库,表操作

--  删除库
drop database if exists db_name;
--  强制删除库
drop database if exists db_name cascade;

--  删除表
drop table if exists employee;

--  清空表
truncate table employee;
--  清空表,第二种方式
insert overwrite table employee select * from employee where 1=0; 

--  删除分区
alter table employee_table drop partition (stat_year_month>='2018-01');

--删除分区
 alter table tab_test drop if exists partition(p_age=10); 
--删除分区时,可以只指定局部 
alter table tab_test drop partition(p_name='Tom'); 

 

-- 新增分区

alter table tab_test add if not exists partition(p_age=11,p_name="Tom")
---需要指定所有的分区

--修改表结构

alter table myDatabase.nbzz_ckmxz add if not exists partition(tjrq='20171231')add partition(tjrq='20180101')  -- 手动给分区表增加2个分区
alter table myDatabase.nbzz_ckmxz drop if exists partition (tjrq='20171231');   -- 手动删除分区表某个分区
alter table myDatabase.nbzz_ckmxz add columns (fh string);     -- 追加字段
alter table myDatabase.nbzz_ckmxz change hydh hydh1 string;          -- 修改字段hydh名称为hydh1,类型为string


drop table myDatabase.nbzz_ckmxz;  -- 删除表
alter table myDatabase.tmp_nbzz_ckmxz rename to myDatabase.nbzz_ckmxz;  -- 重命名表

 

--- 显示表结构

desc khdx_hy;   -- 显示表khdx_hy的表结构
desc formatted khdx_hy; -- 格式化表khdx_hy的表结构信息,信息更详细,包括在hdfs的存储位置
show partitions khdx_hy; -- 显示表khdx_hy的分区信息
show create table khdx_hy; -- 查看建表语句

--创建表

 

create EXTERNAL TABLE IF NOT EXISTS  table tab_test(
name string,
age int,
num1 double,
num2 bigint,
msg varchar(80)    --最后一个字段后面不能有  ','  号
)
partitioned by (p_age int,p_name string) --分区信息
row format delimited fields terminated by ',' --数据中,属性间用逗号分隔
stored as textfile location '/tab/test/tab_test';  --保存路径,最后也可带'/' 即写成 '/tab/test/tab_test/'
--  EXTERNAL TABLE IF NOT EXISTS 推荐 
-- stored as orc ;orc类型的表,手动推数据(txt / csv 文件;无需表头,行尾无需',',数据文件保存为unix utf-8 无bom格式)不行;
--可以借助textfile类型的临时表插入数据;插入时,要注意字段顺序对应一致。

--  按条件删除数据
insert overwrite table employee_table select * from employee_table where id>'180203a15f';

--插入数据

指定分区,追加插入;最好不要用 'seletc *  ' 表字段变化时,*指代的内容不一样
insert into table tab_test_orc partition(p_age=10,p_name='lucy') select name,age,num1,num2,msg from tab_test_temp;


指定分区,覆盖插入
insert overwrite table tab_test_orc partition(p_age=10,p_name='lucy') select name,age,num1,num2,msg from tab_test_temp;

--动态分区;动态分区匹配最后选出的字段;只与字段顺序有关系,与名字无关;同时存在静态和动态分区,动态分区必须在静态分区之后

insert into table tab_test partition(p_age,p_name)(
select name,
       age,
       num1,
       num2,
       msg,
       age as pppp_age,  --取不取别名都可以;分区需要出现在select出来的字段的最后位置,为了匹配。
       name as p_name   --写个对应的别名,看上去好理解一点
from tab_test_temp);

 CREATE EXTERNAL TABLE IF NOT EXISTS xxxx(
  prod_line_code string COMMENT 'xx',
  prod_line string COMMENT 'xx',
  sss bigint COMMENT 'xx'
) partitioned by (statisc_date string) STORED AS parquet
LOCATION '/x/u';
INSERT
  OVERWRITE TABLE xxxx partition(statisc_date) (
    select
      '' as prod_line_no,
      '' as prod_line,
      0 as sss,
      '2020-01-01' as statisc_date
    from
      yyyyyy t
  )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值