Hive DML(数据导入导出)

xiaoxiao2025-09-18  114

DML

DML:Data Manipulation Language(数据管理语言)

加载数据到表

语法

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

从本地加载数据

LOAD DATA LOCAL INPATH '/home/hadoop/data/dept.txt' INTO TABLE ruoze_dept;

使用overwrite加载数据 在加载数据的时候,如果没有加上overwite 关键字的话 会重复 加载

所以一般在工作中,加载数据的时候一定是要加上overwirte的

LOAD DATA LOCAL INPATH '/home/hadoop/data/dept.txt' OVERWRITE INTO TABLE ruoze_dept;

从hdfs上加载数据 从hdfs上加载数据 只需要去掉 local 即可,其他一致的

LOAD DATA INPATH '/data/dept.txt' OVERWRITE INTO TABLE ruoze_dept;

查看下hdfs上的文件

查看hive中数据

这里需要注意的是如果从hdfs上加载数据,执行第二次的时候,是会有错误的

错误日志提示文件不存在了,查看hdfs

果然没有了,这里细想一下可以理解的,因为hive的内部表的元数据信息和数据都是有hive自己管理的,所以我们从hdfs中加载完数据之后,会将hdfs上的目录移动到hive的数据仓库对应的数据库中

根据查询语句插入数据

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement; INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement; INSERT OVERWRITE TABLE ruoze_dept_test select deptno ,dname ,loc from ruoze_dept;

注意 不能插入数据顺序不能错,字段数要一致

从hive中写出数据

INSERT OVERWRITE [LOCAL] DIRECTORY directory1 [ROW FORMAT row_format] [STORED AS file_format] (Note: Only available starting with Hive 0.11.0) SELECT ... FROM ...

执行导出语句

INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/data/hive_test' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' SELECT empno,ename FROM ruoze_emp;

查看结果

转载请注明原文地址: https://www.6miu.com/read-5036522.html

最新回复(0)