Hive的建表与加载数据

一.普通的建表

create table students1 ( id bigint, name string, age int, gender string, clazz string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; // 必选,指定列分隔符

注:不指定建表路径的话,默认的路径为 /user/hive/warehouse

二.指定分区的建表

create table IF NOT EXISTS students1 ( id bigint, name string, age int, gender string, clazz string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/bigdata30/intput1';

注:指定了分区,则会在指定路径下创建一个文件夹,可以向文件夹中上传数据文件,但是必须每个字段必须用指定的分隔符隔开,Hive会自动将你所上床的数据插入到表中

三.指定存储格式的建表

create table IF NOT EXISTS test_orc_tb ( id bigint, name string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS ORC LOCATION '/bigdata29/out6'; /* 指定储存格式为orcfile,inputFormat:RCFileInputFormat,outputFormat :RCFileOutputFormat,如果不指定,默认为textfile,注意:除textfile以 外,其他的存储格式的数据都不能直接加载,需要使用从表加载的方式。 */

四.将查询到的数据结果写入到表中

/* 表不存在的情况下插入数据: 自动创建students2表,并将从students1中查询出来的10条结果插入到 students2表当中。 */ create table students2 as select * from students1 limit 10; /* 表存在的情况下插入数据:(没有as) 并将从students中查询出来的10条结果插入到students2表当中。 这是复制 不是移动students表中的表中的数据不会丢失 */ insert into table students2 select * from students; /* 表存在的情况下插入数据:(没有as) 将数据覆盖写入students2表当中 */ insert overwrite table students2 select * from students;

五.只想建表,不需要加载数据

create table students5 like students;

六.创建复杂的表

create table IF NOT EXISTS t_person( name string, friends array<string>, children map<string,int>, address struct<street:string ,city:string> ) row format delimited fields terminated by ',' -- 列与列之间的分隔符 collection items terminated by '_' -- 元素与元素之间分隔符 map keys terminated by ':' -- Map数据类型键与值之间的分隔符 lines terminated by '\n'; -- 行与行之间的换行符 数据为: songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,beng bu_anhui yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,he fei_anhui

七.加载数据

load data inpath '/input1/students.txt' into table students; /* 将HDFS上的/input1目录下面的students.txt数据移动至students表对应的HDFS 目录下,注意是 移动、移动、移动 /*

load data local inpath '/data/students.txt' into table students; /* 将Linux本地上的/data目录下面的students.txt数据移动至students表对应的HDFS 目录下,注意是 移动、移动、移动 /* load data local inpath '/data/students.txt' overwrite into table students; /* 加上overwrite关键字 将Linux本地上的/data目录下面的students.txt数据复制到students表对应的HDFS 目录下,注意是覆盖 /*

  • 27
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hive中,可以使用多种方式向表中插入数据。一种常见的方式是使用INSERT INTO语句,将数据直接插入到已存在的表中。例如,可以使用以下语法将数据插入到表中: INSERT INTO 表名 VALUES (值1, 值2, ...); 另一种方式是使用LOAD DATA语句,将数据从外部文件加载到表中。可以使用以下语法将数据加载到表中: LOAD DATA LOCAL INPATH '文件路径' OVERWRITE INTO TABLE 表名; 其中,'文件路径'是指外部文件的路径,可以是本地文件系统或HDFS上的文件路径。 还有一种方式是创建外部表,使用CREATE EXTERNAL TABLE语句创建表,并指定外部数据的位置。然后可以使用LOAD DATA语句将数据加载到外部表中。这种方式可以将数据存储在外部位置,而不是Hive默认的仓库位置。例如: CREATE EXTERNAL TABLE 表名 (字段1 数据类型, 字段2 数据类型) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '外部数据路径'; 其中,'外部数据路径'是指外部数据存储的位置。 需要注意的是,根据具体的需求和数据来源,选择合适的方式来插入数据Hive表中。 #### 引用[.reference_title] - *1* *2* *3* [Hive建表、导入数据和插入数据操作](https://blog.csdn.net/louzhu_lz/article/details/90046028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值