【知识分享】sqoop 使用相关demo


#1

###################################################################################

sqoop脚本集

#安装sqoop1 yum install sqoop
#将相应的数据库驱动放置在/usr/lib/sqoop/lib/ 下
#第一部分是导入HDFS、在inceptor创建外表
#第二部分是导入hbase
#整个抽取数据的瓶颈主要在RDB和Hadoop集群的网络带宽、RDB的IO限制
###################################################################################

################################# 通用参数说明 ##################################
–username 源数据库名称
–password 密码
–connect 数据库JDBC连接串
–query SQL语句,其中 where $CONDITIONS 是固定写法
–target-dir 写入HDFS目录 后面跟的HDFS目录需要确认用户有写权限
-m -m 4 map个数,抽数的线程数,默认为4 当-m大于1时,需要指定–split-by 字段
–split-by --split-by id 数据划分列,默认为主键
–fetch-size --fetch-size 单次去多少条记录 一般取1000 可以不用
–null-string --null-string ‘\N’ string类型的空值
–null-non-string --null-non-string ‘\N’ 非string类型的空值
–delete-target-dir --delete-target-dir 导入数据前,清空hdfs目录
–field-terminated-by --field-terminated-by ‘\01’ 列分隔符
–hive-drop-import-delims 去除^A \n \r 等特殊字符

–append --append 是否设置为追加增量的方式导入,sqoop将把数据先导入到一个临时目录中,然后重新给文件命名到一个正式的目录中,以避免和该目录中已存在的文件重名。
-z -z,–compress 压缩格式,默认为gzip

################################# oracle #######################################
#linux登录
su - oracle 切换到oracle用户
sqlplus /nolog 进入sqlplus
conn HTTEST/Ldd9i8 HTTEST用户登录

#常用查询语句
select * from dba_ustats; 查询当前用户信息
select * from user_role_privs; 查看当前用户的角色
select * from user_sys_privs; 查看当前用户的系统权限
select * from user_tab_privs; 查看当前用户的表级权限
select * from user_tables; 查看用户下所有的表
show parameter instance_name; instnace_name 实例名

#列出XE下所有的表
sqoop list-tables --connect “jdbc:oracle:thin:@172.16.140.32:1521:XE” --username xxxx --password xxxx

#导表xxxx.TEST 用户名和表名要大写
sudo -u hdfs sqoop import --connect “jdbc:oracle:thin:@172.16.2.174:1521/XE” --username xxxx --password xxxx --target-dir /data/sqoop/bo_user/XYC_TEST -m 1 --query “select NAME,AGE from xxxx.TEST where $CONDITIONS” --fields-terminated-by “\01” --hive-drop-import-delims --null-string ‘\N’ --null-non-string ‘\N’ --outdir /tmp/sqoop_jar

#把数据从hdfs导入oracle
sqoop export -connect “jdbc:oracle:thin:@172.16.2.174:1521:httest” --username xxxx --password xxxx --table xxxx --export-dir xxxx --m 4 --columns xxxx --input-null-string ‘\N’ --input-null-non-string ‘\N’ --input-fields-terminated-by “|”

################################# MySQL #######################################
#列出源数据库的数据库列表:
sqoop list-databases --username root --password 111111 --connect jdbc:mysql://192.168.164.25:3306/

#列出test数据库中所有的表:
sqoop list-tables --username root --password 111111 --connect jdbc:mysql://192.168.164.25:3306/test

#把数据从test数据库下的表person_all --table 模式 Sqoop 抽取到HDFS目录 /user/root/person_all
sqoop import --username root --password 111111 --connect jdbc:mysql://192.168.164.25:3306/test --table person_all --target-dir /user/root/person_all -m 1 -fields-terminated-by “\01” --null-string ‘\N’ --null-non-string ‘\N’ --hive-drop-import-delims --delete-target-dir

#把数据从test数据库下的表person_all --query 模式 Sqoop 抽取到HDFS目录 /user/root/person_all 建议使用
sqoop import --connect --username root --password 111111 jdbc:mysql://192.168.164.25:3306/test --query “select id,name from person_all where id < 4 and $CONDITIONS” --target-dir /user/root/person_all --split-by id -m 2 --delete-target-dir --hive-drop-import-delims

#数据从HDFS导入到RDB
sqoop export --connect --username root --password 111111 jdbc:mysql://192.168.164.25:3306/test --table person_all_test --export-dir /user/root/person_all --staging-table person_all_test_stage --clear-staging-table

#*其他功能参数
–update-mode allowinsert
–update-key id
–input-null-string string类型的空值
–input-null-non-string 非string类型的空值
–staging-table
–clear-staging-table
–update-mode (allowinsert|updateonly) 更新模式,按照update key更新RDB中的数据,不会导致数据增加;allowinsert模式,当数据主键在RDB中不存在是转为insert操作
–update-key

#*建表
create table person_all_test(id int,name varchar(10),sex varchar(10),age int,primary key(id));
create table person_all_test_stage(id int,name varchar(10),sex varchar(10),age int,primary key(id));

################################# DB2 #######################################

DB2_USERNAME=“db2inst1”
DB2_PASSWORD=‘db2inst1’
DB2_SPACE=“cpzmk”
DB2_CONNECTOR=“jdbc:db2://172.16.15.33:50000/HZK”
DB2_DATABASE=“db2inst1”

TABLENAME=“E_CANCEL”
HDFS_URL="/data"
sudo -u hdfs hdfs dfs -mkdir $HDFS_URL
QUERY=“S_EXT_NODENUM,PRIPID,CANREA,CANDATE,CANAUTH,SANDOCNO,PUBNEWSNAME,PUBDATE,EXTCLEBRSIGN,CANCELBRSIGN,DECLEBRSIGN,AFFWRITNO,BLICREVORINUM,BLICREVORINO,BLICREVDUPCONUM,CAREVNUM,CAREVST,S_EXT_TIMESTAMP,S_EXT_BATCH,S_EXT_SEQUENCE,S_EXT_VALIDFLAG,S_EXT_ICODE,S_EXT_CODETIME”
sudo -u hdfs sqoop import --connect $DB2_CONNECTOR --username $DB2_USERNAME --password $DB2_PASSWORD --fetch-size 1000
-m 4 --target-dir $HDFS_URL/$TABLENAME
–split-by S_EXT_SEQUENCE
–query “select $QUERY from $DB2_DATABASE.$TABLENAME where $CONDITIONS”
–fields-terminated-by “\01”
–hive-drop-import-delims
–null-string ‘\N’
–null-non-string ‘\N’
#&>/tmp/"${TABLENAME}".out &
sudo -u hdfs hdfs dfs -chmod 777 $HDFS_URL/$TABLENAME

################################# SQLserver #######################################

sqoop import --connect ‘jdbc:sqlserver://10.96.39.215;username=p_Maowt1;password=Initial0;database=SFDC’ --table IDL_CENTRALIZED_DB_COST --target-dir /tmp/IDL_CENTRALIZED_DB_COST -m 1 --fetch-size 100000 --fields-terminated-by “\01” --null-string ‘\N’ --null-non-string ‘\N’

################################## sybase #########################################

Sybase_USERNAME=“sa”
Sybase_PASSWORD=""
Sybase_SPACE=“cpzmk”
Sybase_CONNECTOR=“jdbc:sybase:Tds:172.16.15.32:5000/s_rds?charset=cp936”
Sybase_Driver=“com.sybase.jdbc3.jdbc.SybDriver”
Sybase_DATABASE=""

TABLENAME=“CancelOpinion”
HDFS_URL="/data/sybase"
sudo -u hdfs hdfs dfs -mkdir -p $HDFS_URL
QUERY=“cancelOpinionID,bizSequence,cancelOpinion,handinLicencePerson,approveCancelInfo,handinSignDate,approveCancelDept,appoveCancelNo,registerCert,orgSeal,repCert,certNum,certCopyNum,entityNo,shutoutBeginDate,shutoutEndDate,reopenDate,EnterpriseUnregisterID,deviceChange,deviceCancel,cancelMemo,takeLicencePerson,enterpriseShutUpID,CancelWritNo,SealDestoryDesc,CancelFulfillDate,DebtorName,CreditorName,AREA_CODE,TIMESTAMP,repCarCanNum”
sudo -u hdfs sqoop import --connect $Sybase_CONNECTOR --username $Sybase_USERNAME $Sybase_PASSWORD --driver $Sybase_Driver --fetch-size 1000
-m 1 --target-dir $HDFS_URL/$TABLENAME
–query “select $QUERY from $Sybase_DATABASE.$TABLENAME where $CONDITIONS”
–fields-terminated-by “\01”
–hive-drop-import-delims
–null-string ‘\N’
–null-non-string ‘\N’
#&>/tmp/"${TABLENAME}".out &
sudo -u hdfs hdfs dfs -chmod 777 $HDFS_URL/$TABLENAME


#2

没有直接导入inceptorsql的脚本


在线客服
在线客服
微信客服
微信客服