zoukankan      html  css  js  c++  java
  • mysql load data导入脚本

    # !/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

  • 相关阅读:
    Delphi 之 内存篇(二)
    VC++ 之 第八课(面向对象三)
    Delphi API 之 BitBlt
    我所认为的极客精神(一)
    DOS程序员手册(十五)
    DOS程序员手册(十四)
    DOS程序员手册(十三)
    DOS程序员手册(十二)
    DOS程序员手册(十一)
    DOS程序员手册(十)
  • 原文地址:https://www.cnblogs.com/vijayfly/p/5753873.html
Copyright © 2011-2022 走看看