数据导入+数据导出【将csv文件导入到Hive数据库中,再将其从Hive数据库中导出到MySQL中(内附Sqoop的安装及配置)】
①进入Hive
打开cmd,然后启动Hadoop,然后进入Hadoop的bin目录,输入hive,进入Hive
之后输入show tables;即可查看hive里面的表
②将csv文件导入到hive中
先新建一个表,将其命名为retail,建表语句如下:
create table retail(InvoiceNo varchar(255),StockCode varchar(255),Description varchar(255),Quantity varchar(255),InvoiceDate varchar(255),UnitPrice varchar(255),CustomerID varchar(255),Country varchar(255)) row format delimited fields terminated by ',';
建表成功(只截取了其中一部分图)
然后将csv文件里的数据导入到刚刚新建的这个表中,导入语句如下:
load data local inpath 'E:\retail.csv' overwrite into table retail;
导入成功
然后输入 show tables; 查看一下hive中有没有表retail
之后输入查询语句,查询该表中数据,查询语句如下:
select * from retail limit 100;
然后就可以看到数据啦(有些数据我打了马赛克)
(如果显示不出这个网页,说明hadoop和hive没有完全配置好)
然后输入相关路径,我就看到了我之前导入的retail.csv文件啦
参考链接:https://www.cnblogs.com/Bread-Wang/p/10078254.html
③将查询结果保存到另一个表中
先建立一个表,语句可类似于:
create table retail(InvoiceNo varchar(255),StockCode varchar(255),Description varchar(255),Quantity varchar(255),InvoiceDate varchar(255),UnitPrice varchar(255),CustomerID varchar(255),Country varchar(255)) row format delimited fields terminated by ',';
将表名retail改为retai_test_first,即:
create table retai_test_first(InvoiceNo varchar(255),StockCode varchar(255),Description varchar(255),Quantity varchar(255),InvoiceDate varchar(255),UnitPrice varchar(255),CustomerID varchar(255),Country varchar(255)) row format delimited fields terminated by ',';
建表成功后,输入语句:
insert into retail_test_first select * from retail where Country='(此处写入自己要查询的名称)';
(注意分号一定不能少)
插入成功后,输入语句select * from retail_test_first;来检验一下是否插入成功。
参考链接:https://blog.csdn.net/liao_shui/article/details/103286003
④下载并安装Sqoop
下载链接:http://archive.apache.org/dist/sqoop/1.4.7/
选择sqoop-1.4.7.tar.gz,下载,然后配置相关环境
进入此电脑->属性->高级系统设置->环境变量
新建系统变量:SQOOP_HOME
Path中加入:%SQOOP_HOME%\bin
然后启动cmd,输入sqoop version,出现如下问题:
解决办法:下载sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz,下载路径如下:
http://archive.apache.org/dist/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
将sqoop-1.4.6.jar复制粘贴到sqoop-1.4.7的lib目录下
然后重新启动cmd,重新输入sqoop version,问题即解决
连接mysql数据库
将mysql-connector-java-5.1.41-bin.jar导入Sqoop的lib目录下
连接语句:sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123
⑤通过Sqoop将hive中的数据导出到MySQL数据库中
前提是要将相对应的数据库及数据表给建立好!
语句:sqoop export --connect jdbc:mysql://localhost:3306/retail --username root --password 123 --table retail --export-dir /user/hive/warehouse/retail_test_first
其中第一个retail为数据库名,第二个retail为表名,/user/hive/warehouse/retail_test_first为hive中数据的路径
导入成功后,去Navicat上查看数据有没有导入到数据库
很明显,已经导入进来啦!