我是靠谱客的博主 美丽美女,最近开发中收集的这篇文章主要介绍sqoop的常用导入导出命令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

列出所有库

sqoop list-databases --connect jdbc:mysql://mysql:3306/ --username root --password 111111

****************************************************************************************************

列出连接的数据库的所有表

sqoop list-tables --connect jdbc:mysql://mysql:3306/test --username root --password 111111

****************************************************************************************************

生成表的序列化代码

sqoop codegen --connect jdbc:mysql://mysql:3306/hive --username root --password 111111 --table TBLS --class-name tbls

****************************************************************************************************

从mysql导入数据到hdfs(sqoop默认将数据导成以","分割的文件)

sqoop import --connect jdbc:mysql://mysql:3306/test --username root --password 111111 --table haha --target-dir /sqoop/ -m 1

**** -m map的个数,默认4个
**** sqoop import时会先生成表的序列化java代码文件,然后根据代码将表数据序列化。(运行完可在当前目录看到haha.java)

******* --direct 一些数据库提供快速抽取数据的特定工具,如mysql的mysqldump能以大于JDBC的吞吐率从表中读取数据。sqoop使用--direct可以使用这些外部工具
    
****************************************************************************************************

导入成sequencefile

sqoop import --connect jdbc:mysql://mysql:3306/test --username root --password 111111 --table haha --target-dir /sqoop1/ -m 1 --as-sequencefile --bindir .

***** --bindir 将生成的java文件编译打成jar包,放在该目录下。(导出的时候可以使用--class-name和--jar-file重用该jar)

****************************************************************************************************

从hdfs导出到mysql

sqoop export --connect jdbc:mysql://mysql:3306/test --username root --password 111111 --table haha --
export-dir /user/root/haha/part-m-00000

**** --input-fields-terminated-by 指定文件的分隔符

****************************************************************************************************

按mysql的表结构创建hive表(需要将hive的jar包导入到flume下)

sqoop create-hive-table --connect jdbc:mysql://mysql:3306/hive --username root --password 111111 -table TBLS -hive-table h_tbls2e --fields-terminated-by ','

**** --fields-terminated-by ',' 指定hive存储时分割符

****************************************************************************************************

直接在将表导入到hive

sqoop import --connect jdbc:mysql://mysql:3306/test -username root --password 111111 --table haha -m 1 --hive-import

**** --fields-terminated-by ',' 指定hive存储时分割符

****************************************************************************************************
操作数据库

sqoop eval --connect jdbc:mysql://mysql:3306/test --username root --password 111111 -e|--query "select * from haha"

**** sqoop eval 对连接的数据库进行sql操作,-e|--query 后跟sql语句

****************************************************************************************************

时间增量导入
sqoop import --connect jdbc:mysql://mysql:3306/test --username root --password 111111 --table s2 -m 1 --target-dir /user/hadoop/abc1 --incremental lastmodified --check-column sj --last-value '2018-06-20 10:04:55'

字段增量导入
sqoop import --connect jdbc:mysql://mysql:3306/test --username root --password 111111 --table xi -m 1 --target-dir /xi --check-column id --incremental append --last-value 3

****** 增量导入
--incremental append:追加,比如对大于last-value指定的值之后的记录进行追加导入。
--incremental lastmodified:最后的修改时间,追加last-value指定的日期之后的记录
    
对incremental参数,如果是以日期作为追加导入的依据,则使用lastmodified,否则就使用append值。

****************************************************************************************************

追加导入(导入到同一目录下)
sqoop import -append --connect jdbc:mysql://mysql:3306/test --username root --password 111111 --table xi -m 1 --target-dir /xi --check-column id --incremental append --last-value 3

 

最后

以上就是美丽美女为你收集整理的sqoop的常用导入导出命令的全部内容,希望文章能够帮你解决sqoop的常用导入导出命令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部