当前位置: 首页 > news >正文

十堰高端网站建设计算机培训课程

十堰高端网站建设,计算机培训课程,七米网站建设推广优化,做会计题目的网站结论 alter table xxx add columns 时加上 cascade 时,会把所有的分区都加上此字段。如果不加则只有新的分区会加上此字段,旧的分区没有此字段,即便数据文件里有对应的数据,也不能显示内容。 如果分区都是 insert overwrite 生成…

结论

alter table xxx add columns 时加上 cascade 时,会把所有的分区都加上此字段。如果不加则只有新的分区会加上此字段,旧的分区没有此字段,即便数据文件里有对应的数据,也不能显示内容。

  1. 如果分区都是 insert overwrite 生成的,并且旧分区的数据不再重新生成,可以在 add columns 不用cascade,这样旧的分区对应的列显示 null。新的分区正常显示新增的列。
  2. 如果分区都是 insert overwrite 生成的,并且旧分区的数据需要重新生成。两种方案:1. 可以在 add columns 不用 cascade。然后每个分区先执行 drop partition,然后再执行 insert overwrite。2.可以在 add columns 使用 cascade,然后再执行 insert overwrite。如果方案2报错,则只能使用方案1.
  3. 如果文件是从外部生成,然后放到对应分区位置上,并且文件里已经有要加的字段数据。需要使用 cascade。如果使用 cascade 报错,那么看表是否是外部表。如果不是外部表,则先转成外部表。如果是外部表,则直接 drop partition 然后再 add partition location 增加分区。
  4. 如果文件是从外部生成,然后放到对应分区位置上,并且文件里没有要加的字段数据。不需要使用 cascade。旧的分区对应的列显示 null。新的分区正常显示新增的列。

注:

  1. 判断表是否是外部表,使用 ‘show create table xxx’, 如果生成的是 ‘CREATE TABLE’ 是内部表,如果是 CREATE EXTERNAL TABLE 是外部表。
  2. 把表从外部表转成内部表 ALTER TABLE xxx SET TBLPROPERTIES('EXTERNAL'='FALSE');
  3. 把表从内部表转成外部表 ALTER TABLE <table> SET TBLPROPERTIES('EXTERNAL'='TRUE');

测试 cascade 的作用

准备文件
data.txt

key1,value1
key2,value2

测试 no cascade

create table t_no_cascade(c1 string) partitioned by (pt string) row format delimited
FIELDS TERMINATED BY ',' stored as textfile;

增加分区 pt=1

load data local inpath 'data.txt' overwrite into table t_no_cascade partition(pt=1);

检索结果,显示 c1 和 pt 字段。

select * from t_no_cascade where pt=1;
OK
t_no_cascade.c1	t_no_cascade.pt
key1	1
key2	1
  • 增加字段
alter table t_no_cascade add columns(c2 string) ;
  • 再次检索分区pt=1,因为分区没有定义 c2, 所以 c2 为 null。
select * from t_no_cascade where pt=1;
OK
t_no_cascade.c1	t_no_cascade.c2	t_no_cascade.pt
key1	NULL	1
key2	NULL	1
  • 增加新分区 pt=2
    新增的字段对新增的分区有效。
load data local inpath 'data.txt' overwrite into table t_no_cascade partition(pt=2);
  • 检索分区
    因为新分区是表
select * from t_no_cascade where pt=2;
OK
t_no_cascade.c1	t_no_cascade.c2	t_no_cascade.pt
key1	value1	2
key2	value2	2
  • 重新复写老分区
    重新复写老分区不能看到新的列数据。如果需要,可以先删除老分区,再使用 insert overwrite。
insert overwrite table t_no_cascade partition(pt=1) select c1,c2 from t_no_cascade where pt=2;

insert overwrite table xxx partition 还是使用之前的 partition id,所以此分区还是没有新的字段。

select * from t_no_cascade where pt=1;
OK
t_no_cascade.c1	t_no_cascade.c2	t_no_cascade.pt
key1	NULL	1
key2	NULL	1
  • drop 老分区再使用 insert overwrite
    drop 老分区再使用 insert overwrite,可以看到新的字段。
alter table t_no_cascade drop partition(pt=1);
insert overwrite table t_no_cascade partition(pt=1) select c1,c2 from t_no_cascade where pt=2;

这时的 partition(pt=1) 是新的分区id,这时可以看到新的数据。

select * from t_no_cascade where pt=1;
OK
t_no_cascade.c1	t_no_cascade.c2	t_no_cascade.pt
key1	value1	1
key2	value2	1

2. 测试 cascade

create table t_cascade(c1 string) partitioned by (pt string) row format delimited
FIELDS TERMINATED BY ',' stored as textfile;

增加分区 pt=1

load data local inpath 'data.txt' overwrite into table t_cascade partition(pt=1);

检索结果,显示 c1 和 pt 字段。

select * from t_cascade where pt=1;
OK
t_cascade.c1	t_cascade.pt
key1	1
key2	1
  • 增加字段
    使用 cascade 递归的给各分区增加上字段。
alter table t_cascade add columns(c2 string) cascade;
  • 再次检索分区pt=1。
    cascade 后,老的分区也加上了字段。
 select * from t_cascade where pt=1;
OK
t_cascade.c1	t_cascade.c2	t_cascade.pt
key1	value1	1
key2	value2	1
http://www.dinnco.com/news/18670.html

相关文章:

  • 婚恋网站模板怎么制作网页设计
  • 做编程的 网站有哪些方面竞价推广工具
  • 网站设计方案百度推广如何获取精准的客户
  • 北京做公司网站的公司百度题库
  • 淘客联盟做任务网站seo服务商排名
  • 做赚钱的网站seol英文啥意思
  • 免费建站哪家好培训机构连锁加盟
  • 石家庄做商城网站的公司个人博客登录入口
  • 今日楼市新闻头条seo推广的常见目的有
  • 宁波网站制作作宣传推广方案模板
  • 为什么做网站要用谷歌浏览器博客是哪个软件
  • 建设工程施工合同最新版本国内seo排名分析主要针对百度
  • 广州网站建设哪家好电脑优化用什么软件好
  • 服装箱包网站建设青岛网站制作seo
  • 网站做推广怎么收费华为seo诊断及优化分析
  • 网页设计效果图怎么做拼多多seo怎么优化
  • 杭州营销型网站建设怎么做网站教程
  • 北京做机柜空调的网站网络seo培训
  • 廊坊商昊网站建设百度关键词搜索广告的优缺点
  • 按键精灵官方网站怎么做脚本爱站工具查询
  • 电商网站排行榜百度旗下所有app列表
  • 做网站全部乱码怎么办广告素材
  • 电子商务网站建设是什么怎么推广网页
  • 龙岩市住房与城乡建设部网站seo全网营销的方式
  • 网站销售公司鄂尔多斯seo
  • 广西桂林商贸旅游技工学校优化师是一份怎样的工作
  • 个人建个网站多少钱seo推广有哪些
  • 厚街网站建设多少钱上海关键词排名优化价格
  • 兰州网站建设实验总结软件外包公司排名
  • 网站备案号怎么查询上海优化网站方法