1、确定Mysql服务开启正常
[victor@node1 ~]$ service mysql status
Redirecting to /bin/systemctl status mysql.service
● mysqld.service - MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 201*-03-27 12:00:00 CST; 21s ago
Process: 2386 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
Process: 981 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 2385 (mysqld_safe)
CGroup: /system.slice/mysqld.service
├─2385 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─2578 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin
--log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/va.
2、在Mysql中新建一张表并插入一些数据
[victor@node1 ~]$ mysql -uroot –p000000
mysql> create database company;
mysql> use company;
mysql> create table company.staff(id int(4) primary key not null auto_increment, name varchar(255),
sex varchar(255));
mysql> insert into company.staff(name, sex) values('Thomas', 'Male');
mysql> insert into company.staff(name, sex) values('Catalina', 'FeMale');
3、全部导入
[victor@node1 sqoop-1.4.7]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/company?characterEncoding=UTF-8 \
--username root \
--password 000000 \ ## -P 大写P 是用暗文密码
--table staff \
--target-dir /user/company \ ##/user/company 目录不能存在,会自动创建
--delete-target-dir \ ##执行之前,先删除这个/user/company目录
--num-mappers 1 \
--fields-terminated-by "\t" ##每个字段用什么分割,mysql默认是用逗号分割
#csv文件是用逗号分割的文件
#tsv是用制表符tab分割的文件
4、查询导入
[victor@node1 sqoop-1.4.7]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select name,sex from staff where id <=1 and $CONDITIONS;'
#尖叫提示:如果query后使用的是双引号,则$CONDITIONS前必须加转移符,防止shell识别为自己的变量。
5、导入指定列
[victor@node1 sqoop-1.4.7]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns id,sex \
--table staff
#尖叫提示:columns中如果涉及到多列,用逗号分隔,分隔时不要添加空格, --num-mappers 2,设置为2,在hdfs会生成2个文件
6、使用sqoop关键字筛选查询导入数据
[victor@node1 sqoop-1.4.7]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--table staff \
--where "id=1"
尖叫提示:在Sqoop中可以使用sqoop import -D property.name=property.value这样的方式加入执行任务的参数,多个参数用空格隔开。