• 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

  • 相关阅读:
    [转]Android输入法框的梳理
    [转]Android中OptionMenu的使用
    [转] Android把view的画面转换为bitmap
    Health Level Seven International (HL7)
    [转]andriod的apk文件相关的编译反编译工具
    [转]Android优秀开源项目收集
    而立之年 独立自主
    [转]Android模拟键盘和键盘监听的一些调研
    [转] linux中如何能在DDMS中打开真机中的数据库
    [转]关于使用SurfaceFligner进行绘图的具体实现方法
  • 原文地址:https://www.cnblogs.com/vijayfly/p/5753873.html
Copyright © 2020-2023  润新知