一 Hive 导入数据
1.1 从本地文件系统导入
LOADDATA LOCAL INPATH '本地文件系统文件' [OVERWRITE]
INTOTABLE table_name;
特点:从本地文件系统将文件拷贝到表所在的路径下
例子:LOADDATA LOCAL INPATH '/opt/data/employee.txt ' INTO
TABLEemployee;
1.2从HDFS 导入
LOADDATA INPATH 'HDFS文件'[OVERWRITE] INTO TABLE table_name;
特点:从HDFS系统将文件移到到表所在的路径下,之前的那个文件将不复存在,一般来讲都是一些大的数据会存放在HDFS上
例子:LOADDATA INPATH '/var/hadoop/employee.txt' OVERWRITEINTO TABLE employee;
从Hadoop分布式文件系统,将/var/hadoop/employee.txt文件覆盖导入表employee.
1.3 创建表时,根据查询别的表的数据导入,即CTAS
特点:一般用于对于数据查询结果的保存
CREATETABLE IF NOT EXISTS employee_bak ASSELECT * FROM employee;
1.4 表已经建好,导数据查询别的表的数据导入
特点:一般用于对于数据查询结果的保存
CREATETABLE IN NOT EXISTS emp_insert LIKE employee;
INSERTINTO TABLE emp_insert SELECT * FROM employee;
1.5通过sqoop导入
二 Hive导出数据
2.1INSERT OVERWRITE [LOCAL] DIRECTORY 'path' SELECT * FROM table_name;
第一种:导出本地文件系统
INSERTOVERWRITE LOCAL DIRECTORY '/opt/data/backup' SELECT * FROM emp;
第二种:导出HDFS
INSERTOVERWRITE DIRECTORY '/var/hive/backup' SELECT * FROM emp;
如果需要指定分隔符:
INSERTOVERWRITE LOCAL DIRECTORY '/opt/data/backup' ROW FORMAT DELIMITED FIELDS BY '\t'SELECT * FROM emp;
INSERTOVERWRITE DIRECTORY '/var/hive/backup' ROW FORMAT DELIMITED FIELDS BY '\t' SELECT* FROM emp;
2.2在HADOOP 通过hdfs dfs-get 命令导出数据
/hdfsdfs -get /user/hive/warehouse/hadoop.db/emp/emp.txt
/opt/data/backup/
2.3通过 hive命令 -e 或者-f 重定向输出
新建一个back.sql文件 在/opt/data
SELECT* FROM emp;
./hive--database hadoop -f /opt/data/back.sql > /opt/data/emp.log2.4 通过2.4 sqoop导出,进行数据备份