[warning] 实验环境:完全分布式-bigdata1-bigdata2-bigdata3
要求:该实验需要用到HDFS,所以需要把HDFS的集群启动
启动顺序:1.ZooKeeper 2.HDFS
[info] (1)查看数据库的名称
# 连接113的数据库,查看数据库名称
sqoop list-databases --connect jdbc:mysql://ip:3306/ --username 用户名--password 密码
# 示例
sqoop list-databases --connect jdbc:mysql://192.168.46.113:3306/ --username root --password 123456
:-:
[info] (2)列举出数据库中的表名
# 连接113数据库,列举出数据库中的表名
sqoop list-tables --connect jdbc:mysql://ip:3306/数据库名称 --username 用户名 --password 密码
# 示例
sqoop list-tables --connect jdbc:mysql://192.168.46.113:3306/hadoop --username root --password 123456
:-:
[info] 3. 导入:sqoop import
#命令解释:
sqoop import
--connect jdbc:mysql://ip:3306/databasename #指定JDBC的URL 其中database指的是(Mysql或者Oracle)中的数据库名
--table tablename #要读取数据库database中的表名
--username root #用户名
--password 123456 #密码
--target-dir /path #指的是HDFS中导入表的存放目录(注意:是目录)
--fields-terminated-by '\t' #设定导入数据后每个字段的分隔符,默认;分隔
--lines-terminated-by '\n' #设定导入数据后每行的分隔符
--m 1 #并发的map数量1,如果不设置默认启动4个map task执行数据导入,则需要指定一个列来作为划分map task任务的依据
-- where ’查询条件‘ #导入查询出来的内容,表的子集
--incremental append #增量导入
--check-column:column_id #指定增量导入时的参考列
--last-value:num #上一次导入column_id的最后一个值
--null-string ‘’ #导入的字段为空时,用指定的字符进行替换
#实验流程:
# 1.把MySQL数据库hadoop的表student导入到HDFS中(注意\后面不要有空格)
sqoop import \
--connect jdbc:mysql://192.168.46.113:3306/hadoop \
--username root \
--password 123456 \
--table student \
--target-dir /sqoop \
--delete-target-dir
#实验检验:去HDFS的/sqoop目录看一下是否有数据,有的话即正确
:-:
# 2.把MySQL数据库hadoop的表student部分列导入到HDFS中
sqoop import \
--connect jdbc:mysql://192.168.46.113:3306/hadoop \
--username root \
--password 123456 \
--table student \
--columns="id,name,num" \
--target-dir /sqoop \
--delete-target-dir
:-:
# 3.增加where查询条件,导入id=1的数据(请先在mysql数据库创建一个id为1的数据)
sqoop import \
--connect jdbc:mysql://192.168.46.113:3306/hadoop \
--username root \
--password 123456 \
--table student \
--where 'id=1' \
--target-dir /sqoop \
--delete-target-dir
:-:
[info] (4)sqoop export 导出
#命令解释:
# 注意:导出(目标表必须在mysql数据库中已经建好,数据存放在hdfs中):
sqoop export
--connect jdbs:mysql://ip:3600/库名 #指定JDBC的URL 其中database指的是(Mysql或者Oracle)中的数据库名
--username用户名 #数据库的用户名
--password密码 #数据库的密码
--table表名 #需要导入到数据库中的表名
--export-dir导入数据的名称 #hdfs上的数据文件
--fields-terminated-by ‘\t’ #HDFS中被导出的文件字段之间的分隔符
--lines-terminated-by '\n' #设定导入数据后每行的分隔符
--m 1 #并发的map数量1,如果不设置默认启动4个map task执行数据导入,则需要指定一个列来作为划分map task任务的依据
--incremental append #增量导入
--check-column:column_id #指定增量导入时的参考列
--last-value:num #上一次导入column_id的最后一个值
--null-string ‘’ #导出的字段为空时,用指定的字符进行替换
# 1.先删除bigdata3数据库student表的数据
# 登录MySQL数据库,然后删除表数据
use hadoop;
select * from student;
delete from student;
:-:
# 1.把HDFS中的数据导出到MySQL数据库hadoop的表student(注意\后面不要有空格)
# 2.注意:可以先把student表的数据清空,再进行实验,模拟数据从HDFS导入student表
sqoop export \
--connect jdbc:mysql://192.168.46.113:3306/hadoop \
--username root \
--password 123456 \
--table student \
--num-mappers 1 \
--export-dir /sqoop
#实验检验:student的表先清空,若sqoop导入后,student有数据证明实验成功
:-:
:-:
内容来源于网络,如有侵权,请联系作者删除!