1、首先,先将windows系统下的csv文件上传到虚拟机目录中。我的是在/my_dbdata/下
在这里插入图片描述
2、启动hive,我提前创建了一个名为toutiao的hive业务数据库。创建时使用的命令:

create database if not exists toutiao comment "user,news information of 136 mysql" location '/user/hive/warehouse/toutiao.db/';

之后再数据库中创建table

hive (default)> use toutiao;

开始使用的和mysql中同样的语句(当然一定会报错了,,但我也贴出错误的代码了)

create table user_profile(userid VARCHAR(100) NOT NULL,mobile_type VARCHAR(30),mobile_system VARCHAR(30),start_telecom VARCHAR(20) character set utf8,network_type VARCHAR(20) character set utf8,start_address VARCHAR(120) character set utf8);//错误,不可取)

以下正确:

create table user_profile(userid VARCHAR(100),mobile_type VARCHAR(30),mobile_system VARCHAR(30),start_telecom VARCHAR(20),network_type VARCHAR(20),start_address VARCHAR(120)) row format delimited fields terminated by ',';

其中在这里插入图片描述
红框标出的语句是为表指定格式,为了保证导入数据时不出错。其中’,'时自己设定的,因为我的时csv文件,默认分隔符是“逗号”,所以选择的逗号。这个可以根据自己的实际情况来。如果忘了设定格式,,可以将表删掉重新建立。。drop table user_profile;
之后,就可以导入数据了

`hive (toutiao)> load data local inpath '/my_dbdata/db_user_info.csv' overwrite into table user_profile;`

之后又创建了另一个表,表中出现了新的数据类型,时间和文本。

Hive 中,可以用String、Date和Timestamp表示日期时间,String 用 yyyy-MM-dd 的形式表示,Date 用yyyy-MM-dd 的形式表示,Timestamp 用 yyyy-MM-dd hh:mm:ss 的形式表示

我使用的Timestamp,文本使用string。

hive (toutiao)> create table news_article_content(newsid VARCHAR(100) ,title string,content string,create_time Timestamp,resource string,content_type string) row format delimited fields terminated by ',';

之后也可以往这个table中导数据了

hive (toutiao)> load data local inpath '/my_dbdata/db_news_info.csv' overwrite into table news_article_content;

在这里插入图片描述
可见成功导入。
创建第三个表:

hive (toutiao)> create table u_news_interaction(userid varchar(100),newsid VARCHAR(100) ,event_type varchar(10),click_time Timestamp) row format delimited fields terminated by ',';

继续开心导数据:

hive (toutiao)> load data local inpath '/my_dbdata/u_news_interaction.csv' overwrite into table u_news_interaction;

撒花

Logo

更多推荐