脚本功能:
1. 将指定的报告文件按照指定的字段、切库切表策略切分
2. 将切分后的文件并发导入到对应的Mongodb中
3. 生成日志文件和done标识文件
使用手册:
-h 打印帮助信息,并退出";
-f 需要切分的数据文件";
-g 清理昨日或历史全部数据: 1 昨日数据 2 历史全部数据";
-k 拆分字段在文件中列数,从1开始";
-o 需要切分的数据文件格式 tsv或csv ";
-d 切分的库数目";
-t 切分的表数目";
-m 切分后,需要入库的mongodb未拆分库名,比如拆分前cpc, 拆分后cpc_01";
-c 切分后,需要入库的mongodb未拆分库名,比如拆分前cpc, 拆分后cpc_0102";
-a 入库fieldFile";
-p 配置文件",
使用步骤:
1. 在配置文件中设置日志、切割后数据临时路径$LOG_HOME 和 $DATA_SPLIT_HOME目录,如果不存在,则手动创建;
在配置文件中设置目标Mongodb参数信息,用来作为导入数据的目标库;
在配置文件中设置Mongodb程序的主目录$MONGO;
2. 按照具体的参数意义,仿照下面的格式执行脚本:
举例:./mongo-split-importer.sh -f /data/shell/test.ata -g 1 -o tsv -k 3 -d 3 -t 3 -m idea -c idea -p ../conf/demeter_conf_qa.sh -a ../conf/idea-head-file
-f 切分目标文件 -o 文件格式 tsv -k 切割字段,第三个 -d 切割成3个库 -t 每个库3个表
-m 导入的mongodb未拆分名称idea -c 导入的mongodb未拆分表名idea -p 环境配置文件 -a 导入目标表的fieldFile文件 -g 清理昨日数据
mongo-split-importer.sh执行脚本:
SPLITFILE= "" #目标切割文件 FILEFORMAT= "" # 目标切割文件格式 , \t FILEFORMATNAME= "" #切割目标文件格式名称 csv tsv SPLITDBNUM= "" #目标切割库数目 SPLITTBNUM= "" #目标切割表数目 IMPORTDBNAME= "" # 目标入库未分割库名 IMPORTTBNAME= "" #目标入库未切割表名 PROFILE= "" #配置文件 FIELDFILE= "" #入库fieldFile CLEAN=0 #清理数据, 0:默认不清理, 1 : 清理昨日的数据 2: 清理所有以前的数据 SPILTTMPDIR= "" #目标切割文件存放临时目录 FULLPATH=$(cd `dirname $0`;pwd -P) SCRIPTFILE=`basename $0` TOTLE_RECORD_NUM=0 #文件切割前的记录条目 SUBFILE_RECORD_NUM=0 #切割后所有文件汇总的记录条目 _mongo_count= "-1" #------------------------------------------------函数--------------------------------------------------------------- function usage(){ echo "$SCRIPTFILE - 分库分表后将数据导数据到mongodb" echo " -h 打印帮助信息,并退出" ; echo " -f 需要切分的数据文件" ; echo " -g 是否清理历史数据,默认不清理 1:清理昨日数据 2:清理以前所有数据" ; echo " -k 拆分字段在文件中列数,从1开始" ; echo " -o 需要切分的数据文件格式 tsv或csv " ; echo " -d 切分的库数目" ; echo " -t 切分的表数目" ; echo " -m 切分后,需要入库的mongodb未拆分库名,比如拆分前cpc, 拆分后cpc_01" ; echo " -c 切分后,需要入库的mongodb未拆分库名,比如拆分前cpc, 拆分后cpc_0102" ; echo " -a 入库fieldFile" ; echo " -p 配置文件,绝对或相对路径文件" , function setFileFormat(){ FILEFORMATNAME=$1 csv) FILEFORMAT= "," ;; tsv) FILEFORMAT= "\t" ;; *) echo "unknow profile -o $1" ; usage;; while getopts ':hf:g:o:k:d:t:a:p:m:c:' OPTION f) SPLITFILE= $OPTARG ;; o) setFileFormat $OPTARG ;; k) SPLITKEY= $OPTARG ;;
订阅:
博文评论 (Atom)
|
没有评论:
发表评论