sqoop:export及各参数释义

参数说明:

--validate <class-name>启用数据副本验证功能,仅支持单表拷贝,可以指定验证使用的实现类
--validation-threshold <class-name>指定验证门限所使用的类
--direct 使用直接导出模式(优化速度)
--export-dir <dir>导出过程中HDFS源路径
-m,--num-mappers <n>使用n个map任务并行导出
--table <table-name>导出的目的表名称
--call <stored-proc-name>导出数据调用的指定存储过程名
--update-key <col-name>更新参考的列名称,多个列名使用逗号分隔
--update-mode <mode>指定更新策略,包括:updateonly(默认)、allowinsert
--input-null-string <null-string>使用指定字符串,替换字符串类型值为null的列
--input-null-non-string <null-string>使用指定字符串,替换非字符串类型值为null的列
--staging-table <staging-table-name>在数据导出到数据库之前,数据临时存放的表名称
--clear-staging-table清除工作区中临时存放的数据
--batch使用批量模式导出

 

mysql:

全量导出:

//例1
//先清空mysql这张表
#!/bin/bash
sqoop eval --connect "jdbc:mysql://172.***.***.170:3309/p_b?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true" \
--username *** \
--password *** \
--e "DELETE from t_kp_***"

//再将数据推送到mysql
sqoop export \
--connect "jdbc:mysql://172.***.***.170:3309/p_b?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true" \
--username *** \
--password *** \
--table t_kp_*** \
--update-key cno \
--update-mode allowinsert \
--input-fields-terminated-by "\001" \
--hcatalog-database os \
--hcatalog-table os_***_kp_***_al \
--columns="id,company,city" \
--num-mappers 1 
--input-null-string '\\N'  
--input-null-non-string '\\N'

//例2
sqoop export \
 --connect "jdbc:mysql://****/ln?useUnicode=true&characterEncoding=utf-8" \
 --username *** \
 --password *** \
 --table t_test_mysql \
 --update-mode allowinsert \
 --input-fields-terminated-by "\001" \
 --hcatalog-database os \
 --hcatalog-table os_table \
 --columns="id,company,city" \
 --num-mappers 1 \
 --input-null-string '\\N' \
 --input-null-non-string '\\N' \
 --null-string '\\N'  \
 --null-non-string '\\N'

 

按天导出到mysql: 

#!/bin/bash
#删除数据
effective_time=`date -d "-1days" +%Y-%m-%d`     #这里先定义一个变量(比如是昨天)
sqoop eval --connect "jdbc:mysql://172.**.***.170:3309/p_b?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true" \
--username p_b \
--password i6h*******jpl \
--e "delete from t_sdssfs where left(statistic_time,10) ='$effective_time'"

#导出数据 insert到mysql表
sqoop export \
--connect "jdbc:mysql://172.**.***.170:3309/p_b?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true" \
--username p_b \
--password i6h*******jpl \
--table t_sdssfs \
--input-fields-terminated-by "\001" \
--hcatalog-database dw \
--hcatalog-table t_sdssfs \
--columns="brand,functions,count_ppv,count_uuv,statistic_time,create_time" \
--num-mappers 1 \
--input-null-string '\\N'  \
--input-null-non-string '\\N'

思路是删除具体哪天的数据,然后将“正确的”数据,导出到新表即可

sqlserver:

把数据从hdfs导回到sqlserver

把数据从hdfs导回到sqlserver,从hive导出也和这个一样,因为都是文本文件,hbase的话,也是不支持直接的,需要通过和hive结合,才能导出。

sqoop export  --connect 'jdbc:sqlserver://192.***.***.105:1433;username=***;password=***;database=SAMS' \
              --table ST_Statistics2 --export-dir /user/cenyuhai/sams

参考:

sqoop export \
  --connect jdbc:microsoft:sqlserver://10.134.777.844/ABC_Finance \
  --table ABC_PAYE_TYP \
  --username myUser \
  --P \
  --m 1 \
  --export-dir /test/financial/abc/pmt_typ/000001_0 
  --driver com.microsoft.sqlserver.jdbc.SQLServerDriver


参考:
https://stackoverflow.com/questions/54702585/hadoop-sqoop-export-to-sql-server-database-driver-placement-and-configuratio

 

参考:https://yq.aliyun.com/articles/60291

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值