Sqoop常用语法

数据导入

从关系型数据库向大数据集群HDFS,Hive,HBase中传输数据,叫做导入。使用关键字import。

数据导入到HDFS

[root@master ~]# sqoop import \
> --connect jdbc:mysql://master:3306/mysql_test?useSSL=false \
> --username root \
> --password 123456 \
> --table student \
> --target-dir /hive/mysql_test \
> --delete-target-dir \
> --fields-terminated-by '\t' \
> --num-mappers 1

查询导入到HDFS

[root@master ~]# sqoop import \
> --connect jdbc:mysql://master:3306/mysql_test?useSSL=false \
> --username root \
> --password 123456 \
> --query 'select * from student where id=101 and $CONDITIONS' \
> --target-dir /hive/mysql_test1 \
> --delete-target-dir \
> --fields-terminated-by '\t' \
> --num-mappers 1

注意:

  • 使用query选项就不能使用table
  • 使用where的时候必须加上and $CONDITIONS
  • 不要使用双引号

指定列导入到HDFS

就是通过sqoop直接将mysql中的表的某些列数据直接导入HDFS

[root@master ~]# sqoop import \
> --connect jdbc:mysql://master:3306/mysql_test?useSSL=false \
> --username root \
> --password 123456 \
> --table student \
> --columns id \
> --target-dir /hive/mysql_test2 \
> --delete-target-dir \
> --fields-terminated-by '\t' \
> --num-mappers 1

注意:
columns如果有多列,那么就使用逗号分隔(id,name,hahah),不要在字段之间添加空格

关键字筛选导入到HDFS

where的用法

[root@master ~]# sqoop import \
> --connect jdbc:mysql://master:3306/mysql_test?useSSL=false \
> --username root \
> --password 123456 \
> --table student \
> --where "id=101" \
> --target-dir /hive/mysql_test3 \
> --delete-target-dir \
> --fields-terminated-by '\t' \
> --num-mappers 1

数据导入到Hive

[root@master ~]# sqoop import \
> --connect jdbc:mysql://master:3306/mysql_test?useSSL=false \
> --username root \
> --password 123456 \
> --table student \
> --hive-import \
> --hive-table mysql_import_test4 \
> --delete-target-dir \
> --hive-overwrite \
> --fields-terminated-by '\t' \
> -m 1

注意:
本过程分成两个步骤:第一步,将数据导入到HDFS上;第二步,创建表,然后将数据迁移到Hive库中。

数据导出

[root@master ~]# sqoop export \
> --connect jdbc:mysql://master:3306/mysql_test?useSSL=false \
> --username root \
> --password 123456 \
> --table student \
> --export-dir /hive/mysql_test \
> --input-fields-terminated-by '\t' \
> -m 1

注意:
mysql中的表如果不存在,不会自动创建。从HDFS导出的数据是追加在已存在的表student中的,可能会造成主键不唯一的问题。

Sqoop脚本

使用opt文件打包sqoop的命令

#自定义存放脚本的目录
[root@master ~]# cd /opt/test/sqoop/
#创建sqoop脚本文件
[root@master sqoop]# vim job_HDFS2MYSQL.opt 

#内容
export
--connect
jdbc:mysql://master:3306/mysql_test?useSSL=false
--username
root
--password
123456
--table
student
--export-dir
/hive/mysql_test
--input-fields-terminated-by
'\t'
-m
1

#执行脚本
[root@master sqoop]# sqoop --options-file job_HDFS2MYSQL.opt

注意:
原本要按照空格分隔的直接换行输入即可,不需要\

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值