- SQL數據Dump 可以使用 mysql 命令 或者 mysqldump命令進行源數據數據的導出
mysql -e "select * from trade_info" -u cs_beta -pqabeta settle_tradeflow -h l-hscdb1.h.beta.cn6.qunar.com >order_day_stat.sql
dump的數據格式如下
1 36586 QunarOTA PPMTransform
supplier_id=2
his_day=3
order_count=4
order_fee_sum=5
currency_type=6
配置config.properties 文件 ,配置數據庫的連接信息等
db_host=***.h.beta.cn6.qunar.com
db_port=3306
db_name=settle_tradeflow
db_username=cs_beta
db_password=qabeta
sql_file=tmp.sql
sqlCreator.sh 生成執行需要的Sql ,存放在tmp.sql 臨時文件中
#!/bin/bash
####################################################
#配置文件定義
DIR=`pwd`
CONFIG_FILE=$DIR"/config.properties"
####################################################
#輸入文件
input_file=$2
#映射配置
mapping=$1
#table_name
table_name=`echo $input_file | awk -F '.' '{print $1}'`
input_file=$DIR"/"$input_file
mapping=$DIR"/"$mapping
#Sql存儲位置
sql_file=`sudo cat $CONFIG_FILE | grep "sql_file" | awk -F '=' '{print $2}'`
sql_file=$DIR"/"$sql_file
####################################################
#######構造插入語句################################
#table 名字
insert_sql="insert into $table_name"
#構建Sql的name值
insert_name="("
for line in `cat $mapping`
do
temp_name=`echo $line | awk -F '=' '{print $1}'`
insert_name=$insert_name$temp_name","
done
last_index=`expr length $insert_name - 1`
insert_name=`expr substr $insert_name 1 $last_index`
insert_sql=$insert_sql$insert_name') values '
values_str=''
while read line
do
values_str=$values_str"("
OLD_IFS="$IFS"
IFS=","
arr=($line)
IFS="$OLD_IFS"
len=${#arr[@]}
for ((i=0;i<len;++i));do
value=${arr[$i]}
values_str=$values_str"'"$value"',"
done
last_index=`expr length "$values_str" - 1`
values_str=`expr substr "$values_str" 1 $last_index`
#values_str=$values_str"),"
values_str=$values_str")"
#將生成好的Sql寫入到文件中
echo $insert_sql$values_str";" >> $sql_file
values_str=''
done<$input_file
last_index=`expr length "$values_str" - 1`
values_str=`expr substr "$values_str" 1 $last_index`
#最終組裝好的執行Sql
#insert_sql=$insert_sql$values_str";"
#echo $insert_sql
#!/bin/bash
####################################################
#配置文件定義
DIR=`pwd`
CONFIG_FILE=$DIR"/config.properties"
#####################################################
#數據庫配置信息
#數據庫地址
db_host=`sudo cat $CONFIG_FILE | grep "db_host" | awk -F '=' '{print $2}'`
#數據庫
db_name=`sudo cat $CONFIG_FILE | grep "db_name" | awk -F '=' '{print $2}'`
#端口號
db_port=`sudo cat $CONFIG_FILE | grep "db_port" | awk -F '=' '{print $2}'`
#用戶名
db_username=`sudo cat $CONFIG_FILE | grep "db_username" | awk -F '=' '{print $2}'`
#密碼
db_password=`sudo cat $CONFIG_FILE | grep "db_password" | awk -F '=' '{print $2}'`
####################################################
#sql文件
sql_file=`sudo cat $CONFIG_FILE | grep "sql_file" | awk -F '=' '{print $2}'`
sql_file=$DIR"/"$sql_file
len=`cat $sql_file | wc -l`
sql=`cat $sql_file`
mysql -s -u$db_username -p$db_password $db_name -h $db_host -P $db_port -e "$sql"
#for((i=0;i<len;++i))
#do
# echo `cat $sql_file | sed -n "${i}p"`
# mysql -s -u$db_username -p$db_password $db_name -h $db_host -P $db_port -e "$sql"
#done
#/bin/bash
dir=`pwd`
for line in `ls | grep '.mapping'`
do
table_name=`echo $line | awk -F '.' '{print $1}'`
data_file=$table_name".sql"
# 執行生成Sql語句
`$dir/sqlcreator.sh "$line" "$data_file"`
# 執行Sql語句
`$dir/sqlexcutor.sh`
#刪除Sql
# `sudo rm $dir/tmp.sql`
done