`

mysql批量操作shell脚本

阅读更多

这两天写了个mysql操作的shell脚本,主要用于mysql数据到内存数据库的批量transfer。

当然适当修改可用于构造测试数据等~

 

#!/bin/sh

 

if [ $# -ne 6 ]

then

echo "usage:"

echo "$0 {db_user} {db_passwd} {mdb_table} {tablenum} {mdbfile_dir} {odbc_conn}"

echo "eg: ./route_transfer.sh wqj 123 SYS_RT_ACCOUNT 10 $OB_REL/mdbroute wqj/123@dsn_name"

echo "      "

exit

fi

 

SCHEMA="zd"

USER=$1

PASSWD=$2

TABLE_NAME=$3

TABLE_NUM=$4

MDB_DIR=$5

DB_CONN=$6

 

DB_IP="127.0.0.1"

DB_PORT="3306"

 

echo "Connect to db ${DB_IP}:${DB_PORT} identified by ${USER} ${PASSWD}"

CONNECT_MYSQL="mysql -h ${DB_IP} -P ${DB_PORT} -u${USER} -p${PASSWD}"

 

SETUTF8="set names utf8;"

 

VALIDDATEFMT="UNIX_TIMESTAMP((CASE WHEN 

ifnull(valid_date, date_format('19700101080000', '%Y%m%d%H%i%s')) > date_format('20371231235959', '%Y%m%d%H%i%s')

   THEN 

              date_format('20371231235959', '%Y%m%d%H%i%s') 

             ELSE 

          date_format(ifnull(valid_date, date_format('19700101080000', '%Y%m%d%H%i%s')),'%Y%m%d%H%i%s') 

                    END)) as aimdb_valid_date"

#echo ${VALIDDATEFMT}

 

EXPIREDATEFMT="UNIX_TIMESTAMP((CASE WHEN

                        ifnull(expire_date, date_format('19700101080000', '%Y%m%d%H%i%s')) > date_format('20371231235959', '%Y%m%d%H%i%s')

                    THEN

                        date_format('20371231235959', '%Y%m%d%H%i%s')

                    ELSE

                        date_format(ifnull(expire_date, date_format('20371231235959', '%Y%m%d%H%i%s')),'%Y%m%d%H%i%s')

                    END)) as aimdb_expire_date"

#echo ${EXPIREDATEFMT}

 

########################SYS_RT_ACCOUNT begin#############################

 

DST_ACCT_TABLE="sys_rt_account"

SRC_ACCT_TABLE_PREFIX="ad.ca_account"

 

ACCT_TABLE_DROP="drop table if exists ${SCHEMA}.${DST_ACCT_TABLE};"

ACCT_TABLE_CREATE="create table ${SCHEMA}.${DST_ACCT_TABLE} as "

ACCT_SELECT_BASE="select CAST(XXX AS UNSIGNED) as XXX_id, CAST(XXXX as UNSIGNED) as XXXX_id, \

                  CAST(0 as SIGNED) as XXXX_code, ${VALIDDATEFMT}, ${EXPIREDATEFMT} from ${SRC_ACCT_TABLE_PREFIX}"

ACCT_TABLE_SHOW="select * from ${SCHEMA}.${DST_ACCT_TABLE};"

 

tableIdx=0

ACCT_TABLE_SELECT=${ACCT_SELECT_BASE}

while [ $tableIdx -lt $(($TABLE_NUM - 1)) ]

do

#     echo ${tableIdx}

    ACCT_TABLE_SELECT="${ACCT_TABLE_SELECT}_${tableIdx} union all ${ACCT_SELECT_BASE}"

# echo ${ACCT_TABLE_SELECT}

    tableIdx=$(( $tableIdx + 1 ))

done

ACCT_TABLE_SELECT="${ACCT_TABLE_SELECT}_${tableIdx};"

 

 

#echo ${ACCT_TABLE_CREATE} ${ACCT_TABLE_SELECT}

 

######create table and dump to mdb file#####

if [ $TABLE_NAME = "SYS_RT_ACCOUNT" ]

then

${CONNECT_MYSQL} << EOF

${SETUTF8}

${ACCT_TABLE_DROP}

${ACCT_TABLE_CREATE} ${ACCT_TABLE_SELECT}

${ACCT_TABLE_SHOW}

EOF

echo "the table SYS_RT_ACCOUNT create end"

 

MDBFILE="ROUTE_CSysRtAccount.mdb"

echo "mdb_transfer ${MDB_DIR}/${MDBFILE}   ${SCHEMA}.${DST_ACCT_TABLE}   ${DB_CONN}  10 import"

mdb_transfer ${MDB_DIR}/${MDBFILE} ${SCHEMA}.${DST_ACCT_TABLE} ${DB_CONN} 10 import

echo "the table SYS_RT_ACCOUNT dump end"

fi

 

########################SYS_RT_ACCOUNT end #############################

分享到:
评论

相关推荐

    Shell脚本批量添加CSV数据到MySQL

    使用一般的mysql命令或者是sql脚本都可以插入数据到mysql数据表中,我这里介绍如何是Shell批量的从CSV文件中添加数据到mysql数据库中,方便数据迁徙,测试数据的添加之类的工作。

    shell的多线程&当前文件夹下批量插入MySQL

    shell的多线程,以及使用多线程编写shell脚本实现当前文件夹下批量插入MySQL。

    shell脚本mysql导出指定表并分表存储

    mysql导出指定表并分表存储sql文件且压缩的shell脚本,数据库数据过大时,可以用于数据库备份

    常用shell 脚本,dos攻击防范,

    常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...

    Shell脚本中执行sql语句操作mysql的5种方法

    本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考。对于脚本输出的结果美化,需要进一步完善和调整。以下为具体的示例及其方法。 1、将SQL语句直接嵌入到shell脚本文件中 代码...

    Navicat for MySQL导出表结构脚本的简单方法

    使用MySQL可视化工具Navicat导出MySQL的表结构脚本的方法。 1、右键Navicat中的数据库→数据传输(Data Transfer)。 2、左边数据库对象(Database Objects)中选择对应的表,右边目标(Target)中选择文件(File)...

    mysql批量执行sql文件的方法

    1、待执行的sql文件为1.sql、2.sql、3.sql、4.sql等 2、写一个batch.sql文件: ... 您可能感兴趣的文章:Shell脚本中执行sql语句操作mysql的5种方法教你如何在MySQL命令行中使用SQL语句的规则Mysql命令行导入s

    实现MySQL定时批量检查表repair和优化表optimize table的shell脚本

    本文介绍mysql定时批量检查表repair和优化表optimize table的shell脚本,对于MySQL数据库的定期维护相当有用!如下所示: #!/bin/bash host_name=192.168.0.123 user_name=jincon.com user_pwd=jincon.com database...

    Linux Shell脚本经典案例合集

    18个Linux Shell脚本经典案例合集,内含: Dos攻击防范(自动屏蔽攻击IP).sh Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx访问日志分析脚本.sh...

    mysql批量清空表工具shell

    该资源适用mysql数据库,清空指定的多张表数据,注意:只是把数据清空了,未做自增重置。修复了上个版本的bug

    18个Linux Shell脚本经典案例视频.zip

    18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) Linux系统发送告警脚本 MySQL数据库备份单循环 MySQL数据库备份多循环 nginx 访问访问日志按天切割 nginx nginx访问日志分析脚本 一键查看...

    通过Shell脚本批量创建服务器上的MySQL数据库账号

    公司有数百台 MySQL 实例,如果手动登入...所以,我们写了一个简单的shell脚本,用来创建批量服务器的mysql 账号。这篇文章主要介绍了通过Shell脚本批量创建服务器上的MySQL数据库账号的相关知识 ,需要的朋友可以参考下

    用shell脚本在mysql表中批量插入数据的方法

    主要介绍了用shell脚本在mysql表中批量插入数据的方法,需要的朋友可以参考下

    MySQL批量插入数据脚本

    shell下向mysql批量插入数据的范例代码,有需要的小伙伴可以参考下

    Linux下Shell从入门到精通完整版视频.zip

    4.使用if条件语句编写MySQL备份脚本.mp4 5.Shell编程之LAMP一键安装脚本实战.mp4 6.For循环及实战批量远程命令脚本.mp4 7.While条件语句企业案例列表读取_0.mp4 8.Shell编程之Case语句及Select综合应用_0.mp4 9....

    数据库巡检shell脚本

    数据库巡检shell脚本,此脚本仅支持Oracle、mysql。可配置多个连接进行批量巡检,如统计表空间使用情况、数据表占用大小、当前阻塞对象、耗时最长的sql、执行最多的sql统计等

    项目基于shell、python,开发的运维脚本工具库

    快捷运维,代号:kjyw,运维脚本工具库,项目基于shell开发,收集各类运维常用工具脚本;实现快速安装nginx、mysql、php、redis、nagios、运维经常使用的脚本等等... 简单 高效 快捷!Linux下很多操作命令,都可以...

    mysql-benchmarksql的批量并发执行工具脚本

    mysql_benchmarksql的批量脚本执行,仅供测试使用。里面需要配置数据库服务器的登陆信息和benchmark的数据仓数。 脚本工具里面缺乏一些判断,如路径写的绝对路径,用户是root用户执行。还需使用者自己注意避坑。

Global site tag (gtag.js) - Google Analytics