在RDS环境下如何导出跨库级联查询结果 mysql -e详解

碰到问题在RDS环境下不能同时导出两个数据库的级联查询,这个时候用mysql -e就可以解决了

可以用shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作 。

用法
mysql  -hhostname -Pport -uusername -ppassword  -e  相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法。

实例:


#!/bin/bash

HOSTNAME="192.168.10.5"                                           #数据库信息
PORT="3326"
USERNAME="root"
PASSWORD="aalb3I5@tmzj"

DBNAME="dbe"                                                       #数据库名称
TABLENAME="dbe_table"                                            #数据库中表的名称

#创建数据库
create_db_sql="create database IF NOT EXISTS ${DBNAME}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} -e"${create_db_sql}"

#创建表
create_table_sql="create table IF NOT EXISTS ${TABLENAME} (  name varchar(20), id int(11) default 0 )"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${create_table_sql}"

#插入数据
insert_sql="insert into ${TABLENAME} values('billchen',2)"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${insert_sql}"

#查询
select_sql="select * from ${TABLENAME}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${select_sql}"

#更新数据
update_sql="update ${TABLENAME} set id=3"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${update_sql}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${select_sql}"

#删除数据
delete_sql="delete from ${TABLENAME}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${delete_sql}"
mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -e"${select_sql}"

mysql -e中 v的作用
用 mysql -e 生成结果导入指定文件时:
     
     ● 若要同时显示语句本身:-v
     ● 若要增加查询结果行数:-vv
     ● 若要增加执行时间:-vvv 
     
     在一些监控脚本中可以用来简化代码
 

㈠ 不带 v 测试:

[mysql@even ~]$ mysql -uroot -poracle -e "SELECT VERSION();SELECT NOW()" > /home/mysql/test.sql
[mysql@even ~]$ cat /home/mysql/test.sql
VERSION()
5.5.16-log
NOW()
2013-05-08 18:06:35


㈡ 带一个 v 测试:

[mysql@even ~]$ mysql -uroot -poracle -e  "SELECT VERSION();SELECT NOW()" -v  > /home/mysql/test02.sql
[mysql@even ~]$ cat /home/mysql/test02.sql
--------------
SELECT VERSION()
--------------

VERSION()
5.5.16-log
--------------
SELECT NOW()
--------------

NOW()
2013-05-08 18:08:40


㈢ 带两个 v 测试:

[mysql@even ~]$ mysql -uroot -poracle -e  "SELECT VERSION();SELECT NOW()" -vv  > /home/mysql/test03.sql
[mysql@even ~]$ cat /home/mysql/test03.sql
--------------
SELECT VERSION()
--------------

VERSION()
5.5.16-log
1 row in set

--------------
SELECT NOW()
--------------

NOW()
2013-05-08 18:14:05
1 row in set

Bye


㈢ 带三个 v 测试:


[mysql@even ~]$ mysql -uroot -poracle -e  "SELECT VERSION();SELECT NOW()" -vvv  > /home/mysql/test04.sql
[mysql@even ~]$ cat /home/mysql/test04.sql
--------------
SELECT VERSION()
--------------

+------------+
| VERSION()  |
+------------+
| 5.5.16-log |
+------------+
1 row in set (0.00 sec)

--------------
SELECT NOW()
--------------

+---------------------+
| NOW()               |
+---------------------+
| 2013-05-08 18:14:49 |
+---------------------+
1 row in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福海鑫森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值