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上的目錄看是否有數據生成