Sqoop笔记二之命令使用

来源:互联网 发布:打印纸品牌 知乎 编辑:程序博客网 时间:2024/05/29 13:26

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否则会报错


0 0
原创粉丝点击