天天看点

sqoop常用命令

参考:https://blog.csdn.net/zhongqi2513/article/details/53281255

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

通过sqoop help命令查看其命令选项:

[[email protected] ~]# sqoop help
Warning: /opt/cloudera/parcels/CDH-5.4.11-1.cdh5.4.11.p0.5/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
19/10/21 14:35:54 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5-cdh5.4.11
usage: sqoop COMMAND [ARGS]

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  import-mainframe   Import datasets from a mainframe server to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

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

这些命令中使用最多的是import和export(导入导出都是站在HDFS角度来说的),下面着重记录一下这两个命令使用。

1.eval

eval命令可以让sqoop使用sql语句对数据库进行操作,如查询表结构,删除数据等。

sqoop eval --connect jdbc:mysql://192.168.0.1:3306/mem --username aaa --password 123456 --query "select * from mem limit 10;"

sqoop eval \
--connect jdbc:postgresql://$olc_host:$olc_port/$olc_dbname \
--username $olc_uname \
--password $olc_upass \
--query "truncate table mem" \
;
           

2.export

从HDFS中将数据导出到关系型数据库中,参数如下:

sqoop常用命令
sqoop常用命令

举例:

目标库中建一张与hive库中一样的表,且用户有插入权限

sqoop export \
--connect jdbc:postgresql://$olc_host:$olc_port/$olc_dbname \
--username $olc_uname \
--password $olc_upass \
--table olc_user \
--update-mode allowinsert \
--fields-terminated-by '\001' \
--export-dir '/user/hive/olc_user.db/olc_user' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
;
           

3.import

从关系型数据库中将数据导入到HDFS中,与export命令正好相反,参数如下:

sqoop常用命令
sqoop常用命令

举例:

sqoop import --connect jdbc:postgresql://$olc_host:$olc_port/$olc_dbname \
--username $olc_uname \
--password $olc_upass \
--table product \
--target-dir '/user/hive/product/20191022T005417/' \
--delete-target-dir \
--fields-terminated-by '\0x01' \
--lines-terminated-by n \
--compress \
--compression-codec org.apache.hadoop.io.compress.GzipCodec \
--null-string '\N' \
--null-non-string '\N' \
--split-by id 
-m 4 \
--where "to_char(create_time,'yyyy-MM-dd')>='2016-08-24'" \
;