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

猜你喜欢

转载自blog.csdn.net/qq_41587243/article/details/83024588