• 导出MySQL数据库模式及数据的Bash脚本


    Bash脚本文件:export_db.sh

    #!/bin/sh

    # export_db.sh
    # 导出数据库模式及数据
    # codingstandards@gmail.com
    # v1: 2010-05-23
    # v2: 2011-10-08/09

    # 命令使用说明
    # 从标准输入读取数据库名称和表名称
    # usage: export_db.sh
    # usage: export_db.sh -
    # 从指定文件读取数据库名称和表名称
    # usage: export_db.sh db_and_tables.txt
    # 通过here string指定数据库名称和表名称
    # usage: export_db.sh <<<"dbname"
    # usage: export_db.sh <<<"dbname tablename"

    # 输入格式说明
    # 由一行或多行组成,可以是下列之一:
    # (1) 空行:将被忽略
    # (2) 注释:以#开头的行,将被忽略
    # (3) db_name:只指定数据库名字,该数据库中的所有表都将被导出
    # (4) db_name table_name:指定数据库名称和表名称,只导出该表

    # 数据库连接参数
    # TODO: 修改下面的参数以适应数据库的设置
    DBOPTS="-pxxx --default-character-set=gbk"怪蜀黍


    # 保存到目录
    # TODO: 可设置为本脚本所在目录,也可以设置在别的目录
    SAVETO=$(dirname "$0")


    # 如果在crontab中执行,需加上下面这行,以保证环境变量正确设置
    . /etc/profile

    # 进入到保存目录
    cd "$SAVETO" || exit 1

    # 导出目录,格式为:dbYYYYmmddHHMMSS,比如 db20111008100923
    DIR=db$(date +%Y%m%d%H%M%S)
    mkdir -p "$DIR"

    # 打印当前时间
    now()
    {
            date "+%F %T.%N"
    }

    # 执行SQL语句,输出执行结果
    # usage: db_exec <db> <sql>
    db_exec()
    {
            mysql $DBOPTS -s "$1" -e "$2"
    }

    # 导出数据库到文件,分目录保存数据库,分文件保存数据表
    # usage: db_dump <db> <table>
    db_dump()
    {
            #echo -n "$1 $2   "
            #db_exec "$1" "select count(*) from $2"
            local count=$(db_exec "$1" "select count(*) from $2")
            printf "$(now)  %-32s%16s\n" "$1.$2" "$count"
            mkdir -p "$DIR/$1"
            mysqldump $DBOPTS --quick --add-drop-table "$1" "$2" >"$DIR/$1/$2.sql"
            echo "$(now)  ok."
    }

    # 从命令行的第一个参数指定的文件读取需要导出的数据库和表的名称,然后导出
    #cat "${1:-export_db.txt}" |
    #cat "$1" |
    cat $1 |
    while read db_name table_name;
    do
            #echo "$db_name $table_name"
            if [ "$db_name" -a "${db_name:0:1}" != "#" ]; then      # 忽略空行和注释
                    if [ ! "$table_name" ]; then    # 如果没有指定表的名称,就认为是导出整个数据库
                            db_exec "$db_name" "show tables" |
                                    while read table_name;
                                    do
                                            db_dump "$db_name" "$table_name";
                                    done
                    else    # 导出指定的数据库中的表
                            db_dump "$db_name" "$table_name"
                    fi
            fi
    #done &> $DIR/export_db.log
    done 2>&1 | tee $DIR/export_db.log

    # 如果没有任何表导出,就把$DIR目录删除
    if [ ! "$(ls $DIR/*/*.sql 2>/dev/null)" ]; then
            echo "$(now)  no tables dumped!"
            rm -rf $DIR
            exit 2
    fi

    # 将导出的文件压缩
    tar zcf $DIR.tar.gz $DIR
    echo "$(now)  $DIR.tar.gz generated." | tee -a $DIR/export_db.log

    # END.

  • 相关阅读:
    图片旋转 1. cv2.getRotationMatrix2D(获得仿射变化矩阵) 2. cv2.warpAffine(进行仿射变化)
    OpenCV入门之寻找图像的凸包(convex hull)
    从泊松方程的解法,聊到泊松图像融合
    人脸属性分析--性别、年龄和表情识别
    numpy的文件存储.npy .npz 文件详解
    python dlib学习(五):比对人脸
    OpenCV3与深度学习实例:Dlib+VGG Face实现两张脸部图像相似度比较
    用Python实现一个简单的——人脸相似度对比
    pom.xml配置,针对mvn clean install -P参数(环境参数)打包
    Springboot使用alibaba的fastJson,@JSONField不起作用的问题
  • 原文地址:https://www.cnblogs.com/sky7034/p/2206957.html
Copyright © 2020-2023  润新知