sqoop的常用命令
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,1. 基础命令列出MySQL中有那些数据库sqoop list-databases \ --connect jdbc:mysql://hadoop01:3306/ \--username hadoo
千家信息网最后更新 2025年01月31日sqoop的常用命令
1. 基础命令
列出MySQL中有那些数据库
sqoop list-databases \ --connect jdbc:mysql://hadoop01:3306/ \--username hadoop \--password root \
列出MySQL中的数据库有哪些表
sqoop list-tables \ --connect jdbc:mysql://hadoop01:3306/mysql \ --username hadoop \ --password root \
在hive中创建一个跟MySQL数据库表中一样的表
create-hive-table --connect jdbc:mysql://hadoop01:3306/test --username hadoop --password root --table book --hive-table test_hk
2.sqoop的数据导入
语法:sqoop import (generic-args) (import-args)
常用参数
-connect jdbc 连接地址 --connection-manager 连接管理者 --driver 驱动类 --hadoop-mapred-home $HADOOP_MAPRED_HOME --help help 信息 -P 从命令行输入密码 -m 指定maptask的个数,指定maptask的并行度--target-dir 指定导出数据在hdfs上的存储目录--fields-terminated-by 指定每条记录中字段之间的分隔符--where 指定查询sql的where条件--query 指定sql查询--columns 指定查询的列 (不指定默认导出所有的列)--password 密码 --username 账号 --verbose 打印流程信息 --connection-param-file 可选参数
MySQL ---> HDFS
#不指定分隔符和路径sqoop import \--connect jdbc:mysql://hadoop01:3306/test \ #指定连接--username hadoop \ #指定MySQL的用户名-password root \ #指定MySQL的密码--table book \ #指定导出的MySQL的表-m 1 #启动一个maptask#ps:如果没有指定文件的存储目录,那么默认的会保存在hdfs上的/user/用户/book 目录中,默认的字段的分隔符逗号。#指定导入路径和分割符sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--target-dir /user/hadoop/book \--fields-terminated-by '\t' \-m 1#导入where的结果sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--where "bid>2" \--table book \--target-dir /user/hadoop/book1 \-m 1ps:where后的条件,用双引号,如果条件的字段为string则里面使用单引号#导入query结果数据sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--target-dir /user/hadoop/book3 \--query 'select * from book where 1=1 and $CONDITIONS' \--split-by bid \ #指定maptask切分的列,列的值.hashcode/maptask的个数--fields-terminated-by '\t' \-m 1ps:1.query外层使用单引号,SQL 语句当中的条件使用双引号,否则会报错;2.在使用query时,必须有where子句,并且必须加入 and $CONDITIONS ,否则会报错3.--query不能和--where、--columns一起使用的4.--query sql语句,放入双引号中需要加转义
MySQL ---> hive
Sqoop导入关系型数据到hive,的过程是先导入hdfs中,然后在load到hive。
#普通导入sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--hive-import \-m 1ps:导入数据到hive表中时,默认在default库下,表名和MySQL导入的表名一样。,默认采用'\u0001'分隔。#全量集sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--fields-terminated-by '\t' \ #列分割符--lines-terminated-by '\n' \ #行分隔符 ,默认也是\n--hive-import \--hive-overwrite \ #覆盖导入--create-hive-table \ #创建表(默认也会自动创建表)--hive-table test.book \ #hive的表名--delete-target-dir #删除中间存放的临时目录ps:表会自动创建,但是库不会,所以在执行语句前,一定要保证hive的数据库存在,否则会把报错。#增量导入,增量数据导入仅导入新添加的行#它需要添加 'incremental' , 'check-column', 和 'last-value' 选项来执行增量导入sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--target-dir /user/hadoop/book \--incremental append \ #指定是增量导入 --check-column bid \ #指定增量的列--last-value 500 \ #指定上一次的结束的列的值,(是从>500开始)一直到末尾-m 1ps:1.--incremental有两个值,append必须指定增量的列,指定使用--check-column(一般是MySQL的主键);lastmodified,最后一次修改表的时间2.增量备份如果想要导入hive中,只能指定--target-dir,导入到存放表的目录下,默认的hive不支持增量导入(即不能添加--hive-import)
MySQL ---> hbase
#sqoop import \--connect jdbc:mysql://hadoop02:3306/mysql \--username root \--password root \--table help_keyword \--hbase-table new_help_keyword \--column-family person \--hbase-row-key help_keyword_id#字段解释--connect jdbc:mysql://hadoop04:3306/mysql 表示远程或者本地 Mysql 服务的 URI--hbase-create-table 表示在 HBase 中建立表。--hbase-table new_help_keyword 表示在 HBase 中建立表 new_help_keyword。--hbase-row-key help_keyword_id 表示hbase表的rowkey是mysql表的help_keyword_id字段。--column-family person 表示在表 new_help_keyword 中建立列族 person。--username 'root' 表示使用用户 root 连接 mysql。--password 'root' 连接 mysql 的用户密码--table help_keyword 表示导出 mysql 数据库的 help_keyword 表。
3.sqoop的数据导出
语法:sqoop export (generic-args) (export-args)
常用参数:
--direct 快速导入--export-dir HDFS 导出数据的目录 -m,--num-mappers 都少个 map 线程 --table 导出哪个表 --call 存储过程--update-key 通过哪个字段来判断更新 --update-mode 插入模式,默认是只更新,可以设置为 allowinsert.--input-null-string 字符类型 null 处理 --input-null-non-string 非字符类型 null 处理--staging-table 临时表--clear-staging-table 清空临时表--batch 批量模式
HDFS ---> MySQL
sqoop export \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--export-dir /sqoopdata \--fields-terminated-by ','
hive----> MySQL
sqoop export \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--export-dir /user/hive/warehouse/uv/dt=2011-08-03 \--input-fileds-terminated-by '\t'
hbase---->MySQL
默认的没有命令直接将hbase中的数据导入到MySQL,因为在hbase中的表数据量通常比较大,如果一次性导入到MySQL,可能导致MySQL直接崩溃。
但是可以用别的办法进行导入:
- 将 Hbase 数据,扁平化成 HDFS 文件,然后再由 sqoop 导入
- 将 Hbase 数据导入 Hive 表中,然后再导入 mysql
- 直接使用 Hbase 的 Java API 读取表数据,直接向 mysql 导入,不需要使用 sqoop
数据
增量
字段
目录
引号
数据库
分隔符
密码
条件
用户
命令
参数
语句
存储
查询
常用
个数
信息
字符
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全日志留存6个月
vs2015的数据库在哪里
淘宝汽车号牌数据库真吗
网络安全为人民小视频
ipv6DNS服务器没检测到
软件开发实习生如何转正
黄山网络安全证
计算机网络技术实用教程第四版课
网络安全是意识形态
上海纵游网络技术有限公司
各级网络安全监督部门
试分析网络安全与网络发展的关系
双路机架服务器批发
南京三堂软件开发
稳定性好的服务器监控工具
sql数据库不能共享
黄浦区环保网络技术销售公司
2017网络安全工具包
建立网址数据库实验报告
易语言可以建多少个数据库
emobile7登陆服务器是
濮阳医药软件开发商
软件开发类客服做什么
火山动力网络技术有限公司
软件开发 技术岗位
数据库原理知识点总结归纳文档
网络技术与布线
数据库查询和处理分录
白山交互软件开发定制
数据库产业发展