这两天写了个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 #############################
相关推荐
使用一般的mysql命令或者是sql脚本都可以插入数据到mysql数据表中,我这里介绍如何是Shell批量的从CSV文件中添加数据到mysql数据库中,方便数据迁徙,测试数据的添加之类的工作。
shell的多线程,以及使用多线程编写shell脚本实现当前文件夹下批量插入MySQL。
mysql导出指定表并分表存储sql文件且压缩的shell脚本,数据库数据过大时,可以用于数据库备份
常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...
本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考。对于脚本输出的结果美化,需要进一步完善和调整。以下为具体的示例及其方法。 1、将SQL语句直接嵌入到shell脚本文件中 代码...
使用MySQL可视化工具Navicat导出MySQL的表结构脚本的方法。 1、右键Navicat中的数据库→数据传输(Data Transfer)。 2、左边数据库对象(Database Objects)中选择对应的表,右边目标(Target)中选择文件(File)...
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数据库的定期维护相当有用!如下所示: #!/bin/bash host_name=192.168.0.123 user_name=jincon.com user_pwd=jincon.com database...
18个Linux Shell脚本经典案例合集,内含: Dos攻击防范(自动屏蔽攻击IP).sh Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx访问日志分析脚本.sh...
该资源适用mysql数据库,清空指定的多张表数据,注意:只是把数据清空了,未做自增重置。修复了上个版本的bug
18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) Linux系统发送告警脚本 MySQL数据库备份单循环 MySQL数据库备份多循环 nginx 访问访问日志按天切割 nginx nginx访问日志分析脚本 一键查看...
公司有数百台 MySQL 实例,如果手动登入...所以,我们写了一个简单的shell脚本,用来创建批量服务器的mysql 账号。这篇文章主要介绍了通过Shell脚本批量创建服务器上的MySQL数据库账号的相关知识 ,需要的朋友可以参考下
主要介绍了用shell脚本在mysql表中批量插入数据的方法,需要的朋友可以参考下
shell下向mysql批量插入数据的范例代码,有需要的小伙伴可以参考下
4.使用if条件语句编写MySQL备份脚本.mp4 5.Shell编程之LAMP一键安装脚本实战.mp4 6.For循环及实战批量远程命令脚本.mp4 7.While条件语句企业案例列表读取_0.mp4 8.Shell编程之Case语句及Select综合应用_0.mp4 9....
数据库巡检shell脚本,此脚本仅支持Oracle、mysql。可配置多个连接进行批量巡检,如统计表空间使用情况、数据表占用大小、当前阻塞对象、耗时最长的sql、执行最多的sql统计等
快捷运维,代号:kjyw,运维脚本工具库,项目基于shell开发,收集各类运维常用工具脚本;实现快速安装nginx、mysql、php、redis、nagios、运维经常使用的脚本等等... 简单 高效 快捷!Linux下很多操作命令,都可以...
mysql_benchmarksql的批量脚本执行,仅供测试使用。里面需要配置数据库服务器的登陆信息和benchmark的数据仓数。 脚本工具里面缺乏一些判断,如路径写的绝对路径,用户是root用户执行。还需使用者自己注意避坑。