1.导出数据库表全量数据到HDFS
-
在MySQL数据库服务器中创建一个数据库userdb, 然后在创建一张表 emp,添加点测试数据到表中
-
从MySQL数据库服务器中的userdb数据库下的emp表导入HDFS上
CREATE DATABASE /*!32312 IF NOT EXISTS*/`userdb` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `userdb`;
/*Table structure for table `emp` */
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`deg` varchar(20) DEFAULT NULL,
`salary` double DEFAULT NULL,
`dept` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `emp` */
insert into `emp`(`id`,`name`,`deg`,`salary`,`dept`) values
(1,'laozhang','manager',70000,'TP'),
(2,'laowang','develop leader',80000,'TP'),
(3,'laoli','ios dev',35000,'AC'),
(4,'laosi','Android dev',23000,'AC'),
(5,'laotie','admin',12000,'TP'),
(6,'laozi','bigdata',90000,'TP');
sqoop import --connect jdbc:mysql://node2:3306/userdb --username root --password 123456 --table emp --m 1
没有指定hdfs目录,自动导入到当前用户目录,并且字段之间默认的分隔符是 ,逗号
提交之后,会运行一个MR程序,最后查看HDFS上的目录看是否有数据生成
2.导入数据库表数据到HDFS指定目录
-
使用参数 --target-dir来指定导出目的地,
-
使用参数--delete-target-dir来判断导出目录是否存在,如果存在就删掉
sqoop import --connect jdbc:mysql://node2:3306/userdb --username root \
--password 123456 --table emp --target-dir /sqoopExportData/emp \
--delete-target-dir --m 1
提交查看HDFS上的目录看是否有数据生成
3.导入数据库表数据到HDFS指定目录并且指定数据字段的分隔符
使用参数 --fields-terminated-by 分隔符
sqoop import --connect jdbc:mysql://node2:3306/userdb --username root --password 123456 --table emp --target-dir /sqoop/emp1 --delete-target-dir --fields-terminated-by '#' --m 1
提交命令查看HDFS上的目录看是否有数据生成