您的位置:首页 > 数据库 > MySQL

mysql load data导入脚本

2016-08-09 16:56 471 查看
# !/bin/bash

############中文说明######################
#本程序的一些提示需要中文支持,如系统没有安装中文包,请先安装:yum -y groupinstall chinese-support

############使用说明######################
#1.运行本程序之前,有几个注意事项,数据库的表需要实现创建好,字段要和源文件的字段一一对应
#2.本程序需要一些参数,示例:./script.sh /tmp/test.txt table_name ,
#3.上述示例中:script.sh是程序文件名,/tmp/test.txt是源文件,table_name是数据库的表名,","是源文件中的字段分隔符
#4.此程序算是version_1.0版本,功能较简单,如果有下版本,将加入源文件的切割功能,正在测试文件切割的性能
#5.此外,还需要一些参数需要在程序中指定,比如mysql的账户和密码,还有具体数据库实例
##########################################

MysqlUser=root        #指定mysql的账户
MysqlPass=123456    #指定mysql的密码
sourcefile=$1
targetfile=$2
db=mytest             #指定数据库实例

if [ -z "$3" ];then
delimit=","
else
delimit=$3
fi

MysqlCmd="mysql -u$MysqlUser -p$MysqlPass $db"
#LoaddataCmd="LOAD DATA LOW_PRIORITY  LOCAL INFILE '$sourcefile' IGNORE INTO TABLE $targetfile CHARACTER SET utf8 FIELDS TERMINATED BY '$delimit';"

[ -z "$sourcefile" ]&&{
echo '没有指定源文件...'
exit 0
}

[ -z "$targetfile" ]&&{
echo '没有指定数据库的表...'
exit 0
}

if [ ! -f "$sourcefile" ]; then
echo "源文件不存在,请检查!程序结束..."
sleep 1
exit 0
fi

echo -n "运行此程序前,请确认源文件为[${sourcefile}],目标数据库表为[${targetfile}],分隔符为[${delimit}](未指定则默认为\",\"): "
read -n 1 -p "(y/n)? " anw
if [ "$anw" = y ];then
echo ""
echo "程序继续,正在处理,请等待..."
elif [ "$anw" = n ];then
echo ""
echo "程序已结束..."
exit 0
else
echo ""
echo "选择错误,程序将结束,请重新运行程序,并输入(y/n)"
exit 0
fi

echo "正在统计文件大小!请等待..."
sleep 1;
echo "..."

{
file_size=`du -sh $sourcefile |awk '{print$1}'`
}&&{
echo "[${sourcefile}]文件大小为:$file_size"
}

sleep 1;
echo "..."
echo "正在导入..."

seconds_1=$(date +%s)
$MysqlCmd -e "LOAD DATA LOW_PRIORITY  LOCAL INFILE '$sourcefile' IGNORE INTO TABLE $targetfile CHARACTER SET utf8 FIELDS TERMINATED BY '$delimit';"
seconds_2=$(date +%s)

if [ $? -eq 0 ]; then
echo "导入完成!"
echo "耗时: `expr $seconds_2 - $seconds_1`秒"
exit 0
else
echo "导入未完成,请检查错误!"
exit 0
fi


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: