sqoop哪个命令可以列出mysql_Sqoop命令详解

##以上完成后在h3机器上配置sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz

查看sqoop提供的命令

[root@h4 sqoop-1.4.4]# bin/sqoop help

Please set $HCAT_HOME to the root of your HCatalog installation.

usage: sqoop COMMAND [ARGS]

Available commands:

codegen            Generate code to interact with database records    //生成代码与数据库中的记录进行交互

create-hive-table  Import a table definition into Hive                    //创建hive表

eval               Evaluate a SQL statement and display the results      //执行一个SQL语句并显示结果

export             Export an HDFS directory to a database table         //导出rdbms数据到hdfs上

help               List available commands                                         //使用sqoop 命令的帮助

import             Import a table from a database to HDFS                 //导入rdbms数据到hdfs上

import-all-tables  Import tables from a database to HDFS               //导入rdbms指定数据库所有的表数据到hdfs上

job                Work with saved jobs                                     //sqoop的作业,可创建作业、执行作业、删除作业

list-databases     List available databases on a server                     //通过sqoop的这个命令列出jdbc连接地址中所有的数据库

list-tables        List available tables in a database                           //通过sqoop的这个命令列出jdbc链接地址数据库中所有的表

merge              Merge results of incremental imports                     //合并增量数据

metastore          Run a standalone Sqoop metastore                     //运行sqoop的元存储

version            Display version information                                   //查看sqoop的版本

See 'sqoop help COMMAND' for information on a specific command.

//使用sqoop列出mysql中所有的数据库

[root@h4 sqoop-1.4.4]# bin/sqoop list-databases --connect jdbc:mysql://h4:3306/ --username root --password 123456

//使用sqoop列出mysql的hive库中所有的表

[root@h4 sqoop-1.4.4]# bin/sqoop list-tables --connect jdbc:mysql://h4:3306/hive --username root --password 123456

//使用sqoop将mysql的test库中所有的表导入到hdfs(我这里有4个表,默认每个表为一个作业,每个作业会并行使用4个map任务来加速导入,每个map任务的数据都会写到一个单独的文件且这些文件都在一个目录中,导出的数据默认以逗号分隔)

[root@h4 sqoop-1.4.4]# bin/sqoop import-all-tables --connect jdbc:mysql://h4:3306/test --username root --password 123456

//使用sqoop复制mysql的test库中的address表结构到hive中(只复制表结构,不复制数据)

[root@h4 sqoop-1.4.4]# bin/sqoop create-hive-table --connect jdbc:mysql://h4:3306/test --username root --password 123456 --table address --hive-table address

//使用sqoop将mysql的test库中的address表数据导入到hive的address表中

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://h4:3306/test --username root --password 123456 --table address --hive-import --hive-table address -m 1 s

//使用sqoop将hive的product表数据导出到mysql的test库中的product表中(要求mysql的test库中必须有product表,且表结构与hive的product表相同)

[root@h4

sqoop-1.4.4]# sqoop export --connect "jdbc:mysql://h4:3306/test?useUnicode=true&characterEncoding=utf8" --username root --password root --table product --export-dir /user/hive/test.db/product --input-fields-terminated-by '\t' --input-null-string 'null' --input-null-non-string 'null'

//将宿主机上MySql的test库中的users表的数据导入到HDFS,默认Sqoop会起4个Map运行MapReduce进行导入到HDFS,存放在HDFS路径为/user/root/users(user:默认用户root:MySql数据库的用户,test:表名)目录下有四个输出文件

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://192.168.1.10:3306/test --username root --password 123456 --table users

//将mysql表数据导入到指定目录下,并对导入的数据的MapReduce作业自定义启动mapper的数量为2

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://192.168.1.10:3306/test --username root --password 123456 --table users --target-dir /sqoop/tb1 -m 2

//指定mysql表的某些字段按照\t为分隔符导入到指定的目录下,并对导入的数据的MapReduce作业自定义启动mapper的数量为2

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://192.168.1.10:3306/test --username root --password 123456 --table users --target-dir /sqoop/tb2 -m 2 --fields-terminated-by '\t' --columns "id,username,password"

//按条件导出mysql表中的数据用\t为分隔符导入到指定的目录下,并对导入的数据的MapReduce作业自定义启动mapper的数量为2

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://192.168.1.10:3306/test --username root --password 123456 --table users --target-dir /sqoop/tb3_2 -m 2 --fields-terminated-by '\t' --where 'id > 1 and id <= 5'

//使用sql语句导出mysql表中的数据,默认为,分隔

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://192.168.1.10:3306/test --username root --password 123456 --query 'SELECT * FROM users where id > 2 AND $CONDITIONS' --split-by users.id --target-dir '/sqoop/tb5'

//将hdfs/testdata/users1/part-m-00000数据文件导入到mysql的test库中的users表中,数据格式用\t分隔,起一个Mapper任务

[root@h4 sqoop-1.4.4]# bin/sqoop export --connect jdbc:mysql://h4:3306/test --username root --password 123456 --table users --export-dir /testdata/users1/part-m-00000 --fields-terminated-by ',' -m 1

//将mysql的test库中的users表的数据导入到hbase的users表中(hbase中该表不存在,由sqoop导入数据是创建)起1个Mapper任务

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://h4:3306/test --username root --password 123456 --table users --hbase-create-table --hbase-table users --column-family info --hbase-row-key id -m 1

如果出现:ERROR tool.ImportTool: Error during import: HBase jars are not present in classpath, cannot import to HBase!这个错解决办法是在/etc/profile中配置$HBASE_HOME环境变量即可

//将mysql的test库中的test表数据导入到hdfs中的/testdata/sqoop/mysql_testdb/test路径下,如果test库中的test表有空列则使用##代替

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://h4:3306/test --username root --password 123456 --table test --target-dir '/testdata/sqoop/mysql_testdb/test' --fields-terminated-by '\t' --null-string '##' -m 1

Sqoop支持两种增量导入模式

1、追加模式append:通过检查递增的ID列,--incremental append  --check-column id --last-value 0  //指定Sqoop如何确定哪些行是新的。对于模式的合法值包括追加和上次更改时间。检查列应为整型,不能是CHAR/NCHAR/VARCHAR/VARNCHAR/LONGVARCHAR/LONGNVARCHAR类型(官方API描述)。指定从以前的导入检查列的最大值开始。

2、最后修改模式lastmodified:通过检查最后修改的时间戳列,--incremental lastmodified --check-column create_time --last-value '2014-07-14 23:07:00' //导入create_time比'2014-07-14 23:07:00'更大的数据。

//将mysql的test库中的test表的新增数据导入到hdfs中sqoop默认的/user/root/test路径下(通过检查上次导入的最大id确定增量导入。追加模式),如果test库中的test表有空列则使用##代替  (导出的数据文件为part-m-00000、part-m-00001...依次递增)

[root@h4 sqoop-1.4.4]# bin/sqoop import --connect jdbc:mysql://h4:3306/test --username root --password 123456 --table test --fields-terminated-by '\t' --null-string '##' -m 1 --append --check-column 'id' --incremental append --last-value 4

//创建一个sqoop的job

[root@h4 sqoop-1.4.4]# bin/sqoop job --create impTestTabJob -- import --connect jdbc:mysql://h4:3306/test --username root --password 123456 --table test --fields-terminated-by '\t' --null-string '##' -m 1 --append

//查看sqoop的job

[root@h4 sqoop-1.4.4]# bin/sqoop job --list

//执行sqoop的job

[root@h4 sqoop-1.4.4]# bin/sqoop job --exec impTestTabJob

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值