这两天写了个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数据库,以提高工作效率。 首先,`prov.csv` 是一个包含CSV(逗号分隔值)格式的数据文件,这种文件类型常用于存储表格数据,易于读写和处理。在本...
本文将详细讲解如何在Shell脚本中实现多线程,并结合实例介绍如何批量插入MySQL数据库。 首先,我们需要理解为什么要使用多线程。在处理大量并发任务时,多线程可以并发执行任务,避免串行执行的低效,尤其在需要对...
这里我们关注的是使用Shell脚本来实现MySQL从原表到历史表的数据迁移。这种自动化的方法可以帮助我们高效、准确地处理大量数据,同时减少人为错误。 首先,让我们深入理解`shell`脚本。Shell是Linux和Unix系统中的...
agent、使用脚本快速新建KVM虚拟机、编写nginx启动脚本、使用shell脚本批量创建用户、mysql备份、传输、删除、自动备份mysql库文件、使用find查找指定范围的目录等多个方面。 检测网段主机状态 shell脚本可以用于...
mysql导出指定表并分表存储sql文件且压缩的shell脚本,数据库数据过大时,可以用于数据库备份
当我们需要在Linux环境下批量处理数据库操作时,结合使用shell脚本和MySQL可以极大地提高效率。以下将详细介绍如何在shell脚本中执行MySQL脚本并传递参数。 首先,我们需要创建一个shell脚本,通常以`.sh`为扩展名...
常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...
这个工具是用Shell脚本语言编写的,可以在Linux或类Unix环境中运行,与MySQL数据库系统无缝对接。在使用这个工具前,首先需要确保你的服务器已经安装了MySQL数据库服务,并且你拥有足够的权限执行清空表的操作。 1....
10. **脚本自动化**:使用shell脚本、Python等工具将SQL操作自动化,提高工作效率。 在实际使用这些脚本时,我们需要根据具体业务需求和数据库结构来调整脚本,同时注意数据的安全性、完整性和一致性。如果你在使用...
8. 文件操作:实例“批量修改文件后缀名”、“压缩并归档文件”以及“监控Nginx进程的脚本”等,让读者学会利用Shell脚本进行文件操作和进程管理。 9. 循环和条件判断:如“使用for循环和if语句批量新建/删除用户”...
本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考。对于脚本输出的结果美化,需要进一步完善和调整。以下为具体的示例及其方法。 1、将SQL语句直接嵌入到shell脚本文件中 代码...
使用MySQL可视化工具Navicat导出MySQL的表结构脚本的方法。 1、右键Navicat中的数据库→数据传输(Data Transfer)。 2、左边数据库对象(Database Objects)中选择对应的表,右边目标(Target)中选择文件(File)...
18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) Linux系统发送告警脚本 MySQL数据库备份单循环 MySQL数据库备份多循环 nginx 访问访问日志按天切割 nginx nginx访问日志分析脚本 一键查看...
在这个“Linux命令行与shell脚本编程 - mysql数据库操作案例”中,我们将探讨如何在Linux环境下通过命令行对MySQL数据库进行操作。 首先,让我们关注Linux常用命令。这些命令包括但不限于: 1. `ls`:列出目录内容...
总结来说,通过Shell脚本在MySQL中批量插入数据是一种有效的方法,但需要根据实际情况调整,比如增加错误处理、优化插入速度或使用更高级的脚本结构来处理大规模数据。对于测试环境,这种简单的脚本已经足够,但对于...
在Linux系统中,CentOS 7是一个非常流行的服务器操作系统,而MySQL则是一个广泛使用的开源关系型数据库管理系统。本文将详细讲解如何使用脚本在CentOS 7上安装MySQL 5.x版本。 首先,安装MySQL 5.x需要确保系统是...
总结来说,MySQL压力测试脚本实例提供了一种模拟实际业务场景的方法,通过生成大量数据并进行读写操作,可以有效地评估数据库在高负载下的性能。这有助于数据库管理员和开发人员了解系统在极限条件下的行为,及时...
本文介绍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脚本知识点详解 #### 一、IT虚拟机资源设置与Linux常用脚本学习 在IT行业中,Linux作为服务器操作系统占据了重要的地位。掌握Linux下的脚本编写能力能够帮助系统管理员更高效地管理服务器资源。...
1. Shell脚本中执行SQL语句操作MySQL的5种方法 2. 教你如何在MySQL命令行中使用SQL语句的规则 3. Mysql命令行导入sql数据 4. Mysql命令行中执行sql的几种方式总结 通过这些方法,你可以更有效地管理和维护你的MySQL...