在开发以及运维等工作中经常会需要 连接数据库>生成表格>以及导入测试数据等工作,利用sql文的一些批处理或者sql的shell命令行功能,可以实现工作的自动化
经常会被采用的两种模式如下:
1 把需要执行的sql些在文件里,通过<输入 batch mode
mysql -h host -u username -ppassword dbname < batch.sql
2 通过shell 命令行直接输入sql文,例如:
mysql -h host -u user -ppassword dbname -e "INSERT INTO users (id, nickname,) values (999, 'andy.chou');"
3 下面是实际工作中用到的脚本,大家在用的时候可以参考,思路一样,只是针对自己的环境做一些替换即可
#!/bin/sh
# 获取脚本绝对路径
DIR=$(cd $(dirname $0); pwd)
# 生成数据表的sql文件
SQL_CREATE=$DIR/create_tables.sql
# 用于测试的数据或者初始化表格数据
CSV_BOOKMARK=$DIR/bookmark.csv
CSV_MEMBERS=$DIR/members.csv
#
CMD_MYSQL="mysql -u andy -p123456 chou001"
# 生成表
$CMD_MYSQL < $SQL_CREATE
# 命令行插入的方法
$CMD_MYSQL -e "INSERT INTO users (id, nickname, created_on) values (999, 'andy.chou', now());"
# CSV文件直接导入的方法 batch模式
$CMD_MYSQL -e " LOAD DATA LOCAL INFILE '$CSV_BOOKMARK' INTO TABLE bookmark FIELDS TERMINATED BY ',' ENCLOSED BY '\'' "
$CMD_MYSQL -e "LOAD DATA LOCAL INFILE 'CSV_MEMBERS' INTO TABLE members FIELDS TERMINATED BY ',' "
# 复数个sql文一起倒入的另外一种方法,利用<<
$CMD_MYSQL <<EOF
update users set user_id = '1' ;
update bookmark set page_id = page_id + 50;
update users set id = 41 where id = 60;
EOF
(责任编辑:IT) |