1. 使用sqoop,比较适合数据量比较大的数据库系统,比如mysql、postgresql、oracle等
$ sqoop import --connect jdbc:mysql://192.168.56.121:3306/metastore --username hiveuser --password redhat --table TBLS
还可以使用 --options-file
来传入一个文件,使用这种方式可以重用一些配置参数:
$ sqoop --options-file /users/homer/work/import.txt --table TEST
/users/homer/work/import.txt 文件内容如下:
import
--connect
jdbc:mysql://192.168.56.121:3306/metastore
--username
hiveuser
--password
redhat
Sqoop导入关系数据库到Hive
https://blog.csdn.net/hblfyla/article/details/51849602
官方文档:
http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_introduction
下面是各个数据库的连接字符串:
sqlite:
private static final String Class_Name = "org.sqlite.JDBC"; private static final String DB_URL = "jdbc:sqlite:F:\\xxxdatabase.db";
mysql:
2.先导出再导入
链接知识:导入和导出sqlite
平时使用官方提供的sqlite3.exe工具来操作 sqlite的数据库,可以在网上下到。
进入管理:
sqlite3.exe d:\\test.db //假设数据是 d:\\test.db
> .databases //显示所有数据库 和 mysql的 show databases;
> .tables //显示当前数据库的表格 和 mysql 的show tables;
> .schema tablename; //显示表格结构 和mysql的 SHOW CREATE TABLE tbl_name
>.output c:\\\\1.sql //导出当前数据库的 sql语句 和mysql的 mysqldump
> .dump
> .import c:\\\\1.sql //导入 //mysql 用source
===================
sqlite 导入
命令: .import
sqlite> .import 文件名 表名
注1: 不要忘了开头的点
注2: 这条语句不能用分号结束. 非SQL不需要分号结束.
注3: 需要查看默认的分隔符separator. 必须一致. 如果不一致可能导致sqlite字段分割错误.
查看分隔符使用命令 .show , 如果不一致可直接修改, 比如:
sqlite>.separator ","
将分隔符转为逗号.
举例1:
将文件a.txt中的数据导入表 tab_xx. (a.csv中字段以逗号分割)
sqlite> .separator ","
sqlite> .import a.txt tab_xx
sqlite>
导入结束.
sqlite 导出
实现方式: 将输出重定向至文件.
命令: .output
sqlite> .output a.txt
然后输入sql语句, 查询出要导的数据. 查询后,数据不会显示在屏幕上,而直接写入文件.
结束后,输入
sqlite> .output stdout
将输出重定向至屏幕.
举例2:
将 tab_xx 中的数据导出到文件a.txt
sqlite> .output a.txt
sqlite> select * from tab_xx;
sqlite> .output stdout
导出完毕.
如需导成csv格式,直接将文件a.txt换成a.csv即可
hive 导入
hive>load data local inpath '/home/hadoop/userinfodata.txt' overwrite into table user_info;
本次需要建立分区表,以代码进行分区:
load data local inpath '/home/hadoop/actionlog.txt' overwrite into table user_action_log PARTITION (dt='2017-05-26');
partition 是指定这批数据放入分区2017-05-26中。
hive导出:
导出数据
--导出数据,是将hive表中的数据导出到本地文件中。 insert overwrite local directory '/home/hadoop/user_info.bak2016-08-22 ' select * from user_info;
去掉local关键字,也可以导出到HDFS上。