一、sqoop的导入
sqoop可以实现传统数据库到hive数据的导入操作
关键字:import
sqoop import
#指定JDBC的URL 其中database指的是(Mysql或者Oracle)中的数据库名
--connect jdbc:mysql://ip:3306/databasename
#要读取数据库database中的表名
--table tablename
#用户名
--username root
#密码
--password 123456
#指的是HDFS中导入表的存放目录(注意:是目录)
--target-dir /path
#设定导入数据后每个字段的分隔符,默认;分隔
--fields-terminated-by '\t'
#设定导入数据后每行的分隔符
--lines-terminated-by '\n'
#并发的map数量1,如果不设置默认启动4个map task执行数据导入,则需要指定一个列来作为划分map task任务的依据
--m 1
#增量导入
--incremental append
#指定增量导入时的参考列
--check-column:column_id
#上一次导入column_id的最后一个值
--last-value:num
#导入的字段为空时,用指定的字符进行替换
--null-string ''
二、sqoop的导出
sqoop导出hive的数据到mysql、oracle等
关键字:export
sqoop export
#指定JDBC的URL 其中database指的是(Mysql或者Oracle)中的数据库名
--connect jdbs:mysql://ip:3600/库名
#数据库的用户名
--username用户名
#数据库的密码
--password密码
#需要导入到数据库中的表名
--table表名
#hdfs上的数据文件
--export-dir导入数据的名称
#HDFS中被导出的文件字段之间的分隔符
--fields-terminated-by ‘\t’
#设定导入数据后每行的分隔符
--lines-terminated-by '\n'
#并发的map数量1,如果不设置默认启动4个map task执行数据导入,则需要指定一个列来作为划分map task任务的依据
--m 1
#增量导入
--incremental append
#指定增量导入时的参考列
--check-column:column_id
#上一次导入column_id的最后一个值
--last-value:num
#导出的字段为空时,用指定的字符进行替换
--null-string ''
三、带where条件,过滤部分数据导出
用query参数,指定sql语句查询结果数据导出
格式:
sqoop export
--query 'select * from table where 1=1 and $CONTITONS'
注意:
$CONTITONS是linux系统的变量,query必须包含$CONDITIONS。