mysql 导出shell_shell操作mysql,Shell操作MySQL并导出文本文件

本文介绍如何使用Shell脚本操作MySQL数据库,包括通过命令行执行SQL语句、批量执行多条SQL语句的方法,并展示了如何创建自定义Shell脚本来简化MySQL数据库的日常管理和查询任务。

注:本文转载自网络

Shell是每一个UNIX系统都有的工具,他功能强大,有很多系统启动程序是用Shell来写的.

在这里,我们利用Shell程序来操作MySQL数据库.

约定: MySQL管理用户为root, 密码为secret.

# vi mysql_opt.sh

#!/bin/sh

#

# 调用方法: mysql_opt $db_name "SQL语句"

sql_user=root

sql_pass=secret

sql_opt="-u$sql_user -p$sql_pass -s"

mysql_opt() {

db_name=$1

sql_lan=$2

mysql $sql_opt <<

EOF

USE

$db_name;

$sql_lan;

QUIT

EOF

}

#

# The file mysql_opt.sh ends here!

这样,就能通过调用mysql_opt函数来对MySQL数据库进行操作.

例: 要查找数据库test_db中test_table表的所有数据

# vi select.sh

#!/bin/sh

#

. ./mysql_opt.sh

echo "Query..."

data=`mysql_opt test_db "SELECT * FROM test_table WHERE 1"`

echo $data

echo "Done!"

#

# The file select.sh ends here!

[root@kevin bin]# ./mysql -u root -p111111 -e "use mysql;select

host,user,password from user"; +-----------+------+-------------------------------------------+

|

host | user |

password |

+-----------+------+-------------------------------------------+

| localhost | root

| *FD571203974BA9AFE270FE62151AE967ECA5E0AA

|

| kevin.com | root

| |

| 127.0.0.1 | root

| |

| localhost

| | |

| kevin.com

| | |

+-----------+------+-------------------------------------------+

****************************************

#!/bin/bash

/usr/local/mysql-5.1.32/bin/mysql -u root -p111111 -e "use

mysql;select host,user,password from user";

exit 0;

****************************************

如果需要导出mysql的记录到文本文件:

/usr/local/mysql-5.1.32/bin/mysql -u root -p111111 -e "use

mysql;select host,user,password from user into outfile

'/home/mysql/aa.txt';"

mysql -u $user -p$password -e "create database test;"

我知道的有如下两种方式可以在shell中访问操作mysql数据库

1. mysql -uusername -ppasswd -e "command;command"

[root@localhost ~]# mysql -uroot -p123456 -e "select user,host from

mysql.user"

+------+-----------------------+

| user |

host |

+------+-----------------------+

| root |

% |

| root |

127.0.0.1 |

| php |

localhost |

| root |

localhost |

| root |

localhost.localdomain |

+------+-----------------------+

请看下面这段文字:(引自mysql参考手册)

对mysql偶尔有用的另一个选项是-e或--execute选项,可用来将SQL语句传递给服务器。该语句必须

用引号引起来(单引号或双引号)。(然而,如果想要在查询中将值引起来,则对于查询应使用双引号

,查询中引用的值应使用单引号)。当使用该选项时,语句被执行,然后mysql立即退出命令外壳。

例如,你可以用下面的命令获得用户账户列表:

shell> mysql -u root -p -e "SELECT User, Host

FROM User" mysql

请注意mysql数据库名作为一个独立的参量传递。然而,相同的查询可能已经使用mysql -u root -p

-e "SELECT User,Host FROM mysql.User"从外壳中执行。

可以按这种方式传递多个SQL语句,用分号隔开:

shell> mysql -u root -p --execute="SELECT Name

FROM Country WHERE Name LIKE

'AU%';SELECT COUNT(*) FROM City" world

2. 如果sql语句比较多,可使用如下方式:

[root@localhost ~]# mysql -uroot -p123456

<< EOF

> use mysql;

> select user,host from user;

> EOF

user host

root %

root 127.0.0.1

php localhost

root localhost

root localhost.localdomain

从查询结果中可以看出,两者的输出结果格式不一样,前一种方式保留了mysql的输出格式。

另外,与此篇文章有关的shell 重定向知识,可以查阅ABS guide第16章节“I/O重定向”和第17章节“Here

Documents”

重定向示意:

mysql -uroot -p123qwe

>"a.txt"

自动登录mysql(root:root,passwd:123456),查询test库,test1表里的user=aa的记录.

#!/bin/sh

mysql -uroot -p123456

select * from testaa while

a=10000; ###1000 not usr single quote mark,because a is int type,only char

type need single quote mark.

EOF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值