sqoop工具介绍(hdfs与关系型数据库进行数据导入导出)

数据表

第一类:数据库中的数据导入到HDFS上

#数据库驱动jar包用mysql-connector-java-5.1.31-bin,否则有可能报错!
  ./sqoop import --connect jdbc:mysql://localhost:3306/erpdb --username root --password 123456 --table tbl_dep --columns 'uuid, name, tele'
:<<!
  输出:
    part-m-00000:
      1,总裁办,8888
      2,采购部,6668
      3,销售部,6888
    part-m-00001:
      4,运输中心,3434
      5,库管中心,5666
      6,人力资源,1234
    part-m-00002:
      7,财务部,9999
    part-m-00003:
      13,222,222
  !

#指定输出路径、指定数据分隔符   ./sqoop import --connect jdbc:mysql://localhost:3306/erpdb --username root --password 123456 --table tbl_dep --target-dir '/sqoop/td' --fields-terminated-by ' ' :<<!   输出:     part-m-00000:       1 总裁办 8888       2 采购部 6668       3 销售部 6888     part-m-00001:       4 运输中心 3434       5 库管中心 5666       6 人力资源 1234     part-m-00002:       7 财务部 9999     part-m-00003:       13 222 222   !

#指定Map数量 -m   ./sqoop import --connect jdbc:mysql://localhost:3306/erpdb --username root --password 123456 --table tbl_dep --target-dir '/sqoop/td1' --fields-terminated-by ' ' -m 2 :<<!   输出:     part-m-00000:       1 总裁办 8888       2 采购部 6668       3 销售部 6888       4 运输中心 3434       5 库管中心 5666       6 人力资源 1234     part-m-00001:       7 财务部 9999       13 222 222   !

#增加where条件, 注意:条件必须用引号引起来   ./sqoop import --connect jdbc:mysql://localhost:3306/erpdb --username root --password 123456 --table tbl_dep --where 'uuid>3' --target-dir '/sqoop/td2' :<<!   输出:     part-m-00000:       4 运输中心 3434       5 库管中心 5666       6 人力资源 1234     part-m-00001:       7 财务部 9999     part-m-00002:     part-m-00003:       13 222 222   !

#增加query语句(可使用 将语句换行)   ./sqoop import --connect jdbc:mysql://localhost:3306/erpdb --username root --password 123456 --query 'SELECT * FROM tbl_dep where uuid > 2 AND $CONDITIONS' --split-by tbl_dep.uuid --target-dir '/sqoop/td3' :<<!   输出:     part-m-00000:       3 销售部 6888       4 运输中心 3434       5 库管中心 5666     part-m-00001:       6 人力资源 1234       7 财务部 9999     part-m-00002:     part-m-00003:       13 222 222   注意:如果使用--query这个命令的时候,需要注意的是where后面的参数,AND $CONDITIONS这个参数必须加上,而且存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在$CONDITIONS前加上即$CONDITIONS,如果设置map数量为1个时即-m 1,不用加上--split-by ${tablename.column},否则需要加上 !


第二类:将HDFS上的数据导出到数据库中(不要忘记指定分隔符)

./sqoop export --connect jdbc:mysql://localhost:3306/erpdb --username root --password 123456 --export-dir '/sqoop/td3' --table aaa -m 1 --fields-terminated-by ','
原文地址:https://www.cnblogs.com/fengmingyue/p/6366827.html