ist-databases命令查看所有的数据库
linux下执行:
sqooplist-databases --connect jdbc:mysql://192.168.172.1:3306/ -username root-password password
-P 不显示密码执行中需要手动输入密码
import
sqoop命令实际上都是转换为map任务。Import命令是将DB数据导入hdfs,我的数据库中有一个staff表内有若干数据。
staff表
执行sqoop命令
sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password --tablestaff
Sqoop默认会生成4个文件,一条记录一个文件,大于4条记录则最多生成4个文件。
-m –target-dir
sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password --tablestaff -m 1 --target-dir sqoop_import_staff
-m 表示只生成一个文件
--target-dir sqoop_import_staff 表示指定生成文件的名称,在hdfs中的路径为/user/root/sqoop_import_staff/part-m-00000
--target-dir import_staff 在hdfs中的路径为/import_staff/part-m-00000
如下图显示3条记录都存在于一个文件中
-z –append --where
sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password --tablestaff -m 1 --target-dir /import_staff --append --where "id=3" –z
-append 追加数据,如果指定路径下存在文件part-m-00000则会生成新的文件,如part-m-00001
-z 使用压缩格式导入,导入的文件使用-text查看
--where 根据字段过滤,先全部从数据库读出然后再根据条件过滤将符合要求的记录写入hdfs
--null-string --null-non-string
sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password --tablestaff -m 1 --target-dir /import_staff --append --null-string "#"--null-non-string "-1"
--null-string "#" 表示当vchar字段为null时以#代替
--null-non-string "-1" 表示当非vchar字段为null以-1代替
--where
sqoop import --connectjdbc:mysql://192.168.172.1:3306/shb02 -username root -password password -m 1--target-dir /import_staff --append --null-string "#"--null-non-string "-1" --query "select * from staff where id=3and \$CONDITIONS"
--where 后面跟sql语句,但是有无where都必须有\$CONDITIONS
注意:以上操作需要启动hadoop集群不能只启动hdfs否则会报错