目录
1.数据导入之 load方式
load data [local] inpath '源文件的路径' [overwrite] into table 表名;
解释:
1. 加local指的是本地路径, 即: Linux文件路径. 路径前缀要加 file:/// 可以省略不写.
不加local指的是HDFS路径.
2. 不写overwrite是追加写入, 如果写了(overwrite)则是覆盖写入.
代码如下(示例):
通过load方式加载数据到 stu表中.
-- 从Linux中加载数据到stu表中, 追加写入.
load data local inpath '/export/data/hivedata/students.txt' into table stu;
-- 不转MR, Linux的源文件还在, 相当于拷贝一份给HDFS.
-- 从Linux中加载数据到stu表中, 覆盖写入.
load data local inpath '/export/data/hivedata/students.txt' overwrite into table stu;
-- 不转MR, Linux的源文件还在, 相当于拷贝一份给HDFS.
-- 从HDFS中加载数据到stu表中. 追加写入 和 覆盖写入都一样, 就是看有没有写 overwrite单词.
load data inpath '/wordcount/students.txt' into table stu_hdfs;
-- 不转MR, HDFS的源文件不在了, 相当于: 剪切.
2.数据导入之 load方式
insert [into | overwrite] table 表名 partition(分区字段=值)
select 列1, 列2... from 表名;
细节:
1. into是追加写入, 后续的table可以省略.
overwrite是覆盖写入, 后续的table不能省略.
2. 插入的时候, 要求和查询出的列的个数, 对应的数据类型必须保持一致, 至于列名, 表名无所谓.
3. insert + select方式底层会转MR程序来执行.
代码如下(示例):
insert into table stu_insert select * from stu;
-- 会转MR程序, into方式是 追加写入, table可以省略.
insert overwrite table stu_insert select * from stu;
-- 会转MR程序, overwrite方式是 覆盖写入, table不可以省略.
3.数据导出
数据导出格式
格式
insert overwrite [local] directory '目的地目录的路径'
row format delimited fields terminated by '行格式分隔符'
select 列1, 列2... from 表名;
细节
1. 加local是Linux路径, 不加则是HDFS路径.
2. 导出时, 是覆盖导出, 可以指定字段分隔符.
代码如下(示例):
将stu的表数据导出到 Linux目录中.
insert overwrite local directory '/export/data/hivedata' select * from stu;
-- 覆盖导出, 默认分隔符'\001'
insert overwrite local directory '/export/data/hivedata2'
row format delimited fields terminated by '#'
select * from stu; -- 覆盖导出, 指定分隔符为'#'
-- 将stu的表数据导出到 HDFS目录中.
insert overwrite directory '/wordcount'
row format delimited fields terminated by '$'
select id, name, age from stu;
4.hive第1代客户端的作用
Hive的第1代客户端指的是: /export/server/hive/bin/hive, 它的作用有四个, 分别是:
1. 充当客户端使用, 可以写Hive SQL
2. 开启metastore 和 hiveserver2服务.
nohup hive --service metastore &
nohup hive --service hiveserver2 &
3. 可以执行一次Hive SQL语句, 执行结束, 会自动断开会话.
hive -e 'HQL语句;'
4. 可以执行Hive SQL脚本.
Hive SQL脚本解释: 可以是任意后缀名的文件, 文件中的内容必须符合HQL规范, 建议后缀名为 .sql
hive -f 'HQL脚本'
总结
本文简单介绍了HiveSQL中的DML语句,主要是用来操作表数据的, 对表数据进行 增删改操作.