shell脚本实现mysql数据库的增删改查操作
2017-12-09 14:08
411 查看
一、shell脚本实现mysql操作
通用的shell语句如下:
1、HOSTNAME是主机名,通常是数据库的ip
2、PORT是端口号
3、USERNAME是用户名
4、PASSWORD是密码
5、通过写sql里面的语句可以执行相应的数据库操作,常用的是数据库的增删改查操作。
6、default-character-set是编码方式
我们通常也不会把数据库的连接信息直接写在程序中,而是写在配置文件中,如命名database.conf文件:
然后利用initDBinfo函数来获取数据库信息:
二、shell脚本实现数据库表的增删改查
2.1 数据库表的新增记录
2.2 文件数据导入数据库
2.3 删除数据库表操作
2.4 修改数据库表操作
2.5 查询数据库表操作
2.6 数据库表数据导出到文件操作
其中数据库表信息也可以放在配置文件中
通用的shell语句如下:
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${sql}" --default-character-set=UTF8
1、HOSTNAME是主机名,通常是数据库的ip
2、PORT是端口号
3、USERNAME是用户名
4、PASSWORD是密码
5、通过写sql里面的语句可以执行相应的数据库操作,常用的是数据库的增删改查操作。
6、default-character-set是编码方式
我们通常也不会把数据库的连接信息直接写在程序中,而是写在配置文件中,如命名database.conf文件:
# 数据库 服务IP 服务端口 数据库用户 数据库密码 student 127.0.0.1 6614 root 1234
然后利用initDBinfo函数来获取数据库信息:
function initDBinfo(){ HOSTNAME=`cat ${dbconfPath} | grep ${1} | awk '{print $2}'` PORT=`cat ${dbconfPath} | grep ${1} | awk '{print $3}'` USERNAME=`cat ${dbconfPath} | grep ${1} | awk '{print $4}'` PASSWORD=`cat ${dbconfPath} | grep ${1} | awk '{print $5}'` }
二、shell脚本实现数据库表的增删改查
2.1 数据库表的新增记录
#这里是实现文件入库记录插入到数据表中 #文件大小,以M为单位 fileSize=`ls -l ${dataImportFile} | awk '{print int($5/1024)}'` #文件行数 fileLineCount=`cat ${dataImportFile}|wc -l` #文件接收时间 fileRecvTim=`stat ${dataImportFile}| grep Modify | awk '{print $2,$3}' | cut -d"." -f1` #数据库名 fileDBName="fileDB" #表名 fileTableName="file_recv_info" #字段列表 fileTableColumns="file_nam,file_size,file_line_ctn,file_recv_tim,file_hdl_rst" #插入数据库操作 insert_file_record_sql="insert into ${fileDBName}.${fileTableName} (${fileTableColumns}) values ('${fileName}',${fileSize},${fileLineCount},'${fileRecvTim}','${fileHdlRst}')"
2.2 文件数据导入数据库
#文件数据导入数据表 #dataImportFile表示导入文件名,IMPORTSTYLE表示导入方式,DBNAME表示数据库名,TABLENAME表示表名, #columnSplitSeparator表示列分隔符,常见为,或者|等;rowSplitSeparator为行分隔符 import_data_sql="load data low_priority local infile '${dataImportFile}' ${IMPORTSTYLE} into table ${DBNAME}.${TABLENAME} fields terminated by '${columnSplitSeparator}' lines terminated by '${rowSplitSeparator}'" #通常行分隔符为\n,linux中表示回车+换行符 rowSplitSeparator="\n"
2.3 删除数据库表操作
#这里是删除时间在某个时间段内的记录,实现数据库表的定期清理功能 #这里OTHERCONDITION可以在配置文件里面配置,添加额外的判断条件 #limit是限制一次删除的记录条数 clean_data_sql="delete from ${DBNAME}.${TABLENAME} where ${TIMECOLUMN} between \"${CLEAN_START_TIME}\" and \"${CLEAN_END_TIME}\" and ${OTHERCONDITION} limit ${CLEAN_NUM}"
2.4 修改数据库表操作
#数据库更新操作,修改参数值 update_param_sql="update ${DBNAME}.${TABLENAME} set param_val=\"${paramVal}\" where param_key=\"${paramKey}\" " current_time=`date "+%Y-%m-%d %T"` echo "${current_time} Start to update table ${DBNAME}.${TABLENAME} set paramVal equals ${paramVal}" >> ${logFile} initDBinfo ${DBNAME} mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -Nse "${update_param_sql}" --default-character-set=UTF8; >> ${logFile} 2>&1
2.5 查询数据库表操作
#查询表中满足条件的记录条数 count_data_sql="select count(1) from ${DBNAME}.${TABLENAME} where ${TIMECOLUMN} between \"${CLEAN_START_TIME}\" and \"${CLEAN_END_TIME}\" and ${OTHERCONDITION}"
2.6 数据库表数据导出到文件操作
#sql语句 export_data_sql="select concat(${COLUMN}) from ${DBNAME}.${TABLENAME}" #数据导出开始日志打印 current_time=`date "+%Y-%m-%d %T"` echo "${current_time} Start to export data [${export_data_file_name}] from ${DBNAME}.${TABLENAME}" >> ${logFile} #获取数据库连接信息 initDBinfo ${DBNAME} #连接数据库并执行数据导出操作 mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -Nse "${export_data_sql}" --default-character-set=UTF8 > ${export_data_file_path}/${export_data_file_name}; >> ${logFile} 2>&1 #数据导出结束日志打印 current_time=`date "+%Y-%m-%d %T"` #echo "${current_time} Finished export data [${export_data_file_name}] from ${DBNAME}.${TABLENAME}" >> ${logFile}
其中数据库表信息也可以放在配置文件中
#导出文件名 数据库表 表名 是否分库分表 时间字段 表字段(导出数据以|分隔) A.txt test student N tim ref_id,"|",IFNULL(stu_id,""),"|",IFNULL(nam,""),"|",IFNULL(age,""),"|",IFNULL(heigth,"") #数据库名称 DBNAME=`cat ${confPath} | grep ${dataExportFile} | awk '{print $2}'` #数据库中表的名称 TABLENAME=`cat ${confPath} | grep ${dataExportFile} | awk '{print $3}'` #表是否分库分表:Y表示分库分表;N表示未分库分表; F表示未分库分表且全量导出 ISSHARDTABLE=`cat ${confPath} | grep ${dataExportFile} | awk '{print $4}'` #时间字段 TIMECOLUMN=`cat ${confPath} | grep ${dataExportFile} | awk '{print $5}'` #要导出的字段 COLUMN=`cat ${confPath} | grep ${dataExportFile} | awk '{print $6}'`
相关文章推荐
- 使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作
- java jdbc连接mysql数据库实现增删改查操作
- python操作mysql数据库实现增删改查
- Java语言实现对MySql数据库中数据的增删改查操作
- python操作mysql数据库实现增删改查
- python操作mysql数据库实现增删改查
- 使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作
- python安装mysql数据库和实现增删查改操作
- Python操作mysql数据库实现增删查改功能的方法
- Java操作MySQL数据库实现增删查改操作
- Java连接MySQL数据库实现增删改查操作!
- Java语言实现对MySql数据库中数据的增删改查操作的代码
- java连接mysql数据库 三 实现增删改查操作
- MySQL数据库基本操作(增删改查)
- Android连接MySQL数据库并进行增删改查操作
- Spring MVC实现mysql数据库增删改查完整实例
- Java操作redis实现增删查改功能的方法示例
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- MyBatis第二讲学习笔记 ,使用MyBatis对表执行增删改查操作——基于注解的实现
- 数据库基础篇(四)通过EF实现对MySql数据库的操作