默认分隔符

# 默认分隔符

分隔符

输入方式

含义

\n

vi中换行即可

用来分割行数据的,每行1条数据。

^A

ctrl+V ctrl+A

用来分割字段(列),在HQL语句中使用\001表示

^B

ctrl+B

用来分割array内元素、struct内元素、map内kv和kv之间。在HQL建表语句中使用\002表示

^C

ctrl+V ctrl+C

用于map的k和v之间的分割。在HQL建表语句中使用 \003 表示

# 数据导入
# 从linux本地导入(overwrite是覆盖已有数据)
load data local inpath ‘/opt/doc/person1.txt’ [overwrite] into table t_person;
# 从hdfs系统中导入(overwrite是覆盖已有数据)
load data inpath '/file/person.txt' [overwrite] into table t_person;
# 验证数据
1. 查询数据
select * from t_person;

2 自定义分隔符

# 分隔符设计

分隔符

含义

备注

,

用来表示每个列的值之间分隔符。 fields

 

-

用来分割array中每个元素,以及struct中的每个值,以及map中kv与kv之间。 collection items

 

|

用来分割map的k和v之间 map keys

 

\n

每条数据分割使用换行。 lines

 

# 建表

create table t_person1(
    id string,
    name string,
    salary double,
    birthday date,
    sex char(1),
    hobbies array<string>,
    cards map<string,string>,
    addr struct<city:string,zipCode:string>
) row format delimited
fields terminated by ','--列的分割
collection items terminated by '-'--数组 struct的属性 map的kv和kv之间
map keys terminated by '|'-- map的k与v的分割
lines terminated by '\n';--行数据之间的分割

# 测试数据

1,张三,8000.0,2019-9-9,1,抽烟-喝酒-烫头,123456|中国银行-22334455|建设银行,北京-10010
2,李四,9000.0,2019-8-9,0,抽烟-喝酒-烫头,123456|中国银行-22334455|建设银行,郑州-45000
3,王五,7000.0,2019-7-9,1,喝酒-烫头,123456|中国银行-22334455|建设银行,北京-10010
4,赵6,100.0,2019-10-9,0,抽烟-烫头,123456|中国银行-22334455|建设银行,郑州-45000
5,于谦,1000.0,2019-10-9,0,抽烟-喝酒,123456|中国银行-22334455|建设银行,北京-10010
6,郭德纲,1000.0,2019-10-9,1,抽烟-烫头,123456|中国银行-22334455|建设银行,天津-20010

# 导入数据

# 在hive命令行中执行
  -- overwrite 是覆盖的意思,可以省略。
load data local inpath ‘/opt/doc/person1.txt’ [overwrite] into table t_person;
# 本质上就是将数据上传到hdfs中(数据是受hive的管理)
dfs -ls /user/hive/warehouse/baizhi.db/t_person 
# 我们可以使用dfs命令,直接按照规定分隔符,上传文件到该目录下,也能查询到。

3 JSON分割符

jar添加和数据导入,建表,在beeline里面操作

 1.本地创建json文件

{"id":1,"name":"zhangsan","sex":true,"birth":"1991-02-08"}
{"id":2,"name":"lisi","sex":true,"birth":"1991-02-08"}

添加格式解析器的jar(本地客户端命令)

# 在hive的客户端执行(临时添加jar到hive的classpath,有效期本链接内)
add jar /opt/installs/hive1.2.1/hcatalog/share/hcatalog/hive-hcatalog-core-1.2.1.jar


# 补充:永久添加,Hive服务器级别有效。
1. 将需要添加到hive的classpath的jar,拷贝到hive下的auxlib目录下,
2. 重启hiveserver即可。

建表

加载文件数据(本地客户端命令)
查看数据
select * from t_person2;

4 CSV格式映射

# 文件名 user_csv.csv
1001,张三,1,1999-9-9
1002,李四,0,1999-9-9
1003,王五,1,1999-9-9

导入解析vsc的文件jar

# 在hive的客户端执行
add jar /opt/installs/hive1.2.1/hcatalog/share/hcatalog/hive-hcatalog-core-1.2.1.jar

建表

加载数据
查询表
select * from t_person3;

5 正则分隔符数据:access.log

建表语句
导入数据
查看数据
select * from t_access;