【发布时间】:2011-04-27 18:55:28
【问题描述】:
有没有办法可以使用 shell 脚本访问 MySQL 数据库? 想要在多个表上做一些选择和一些插入?
如果您能提供一些示例代码,那就太好了,因为我是脚本新手。
【问题讨论】:
有没有办法可以使用 shell 脚本访问 MySQL 数据库? 想要在多个表上做一些选择和一些插入?
如果您能提供一些示例代码,那就太好了,因为我是脚本新手。
【问题讨论】:
【讨论】:
试试这个
#!/bin/bash
echo "show all tables"
mysql -uroot -p'password' dbname<<EOFMYSQL
show tables;
EOFMYSQL
echo "Count of all records"
mysql -uroot -p'password' dbname<<EOFMYSQL
select count(*) from tbname;
EOFMYSQL
【讨论】:
您可以在 shell 脚本中使用 mysql command-line tool。
【讨论】:
例如,选择database dbname的table tablename中的所有name字段,并将所有名称重定向到/tmp/all_name.txt。
#!/bin/sh
mysql -uuser_name -puser_pwd -h10.10.10.10 -A --default-character-set=utf8 \
-e "select name from dbname.tablename;" > /tmp/all_name.txt
注意,-uuser_name 不是 -u user_name,-puser_pwd not -p user_pwd
【讨论】:
实际上,我是使用 Perl 实现的。我编写了一个能够访问 MySQL 数据库的 Perl 脚本。
我所要做的就是将它包含在我的 Perl 脚本中:
# PERL MODULES USING
use DBI;
use DBD::mysql;
但只需确保正确安装了这些模块。我不知道该怎么做,因为我的系统管理员为我做了。
你可以像这样访问数据库:
# MYSQL CONFIG VARIABLES
$platform = "mysql";
$host = "<your db server ip>";
$database = "<db name>";
$org_table = "<table name>";
$user = "<username>";
$pw = "<password>";
# DATA SOURCE NAME
$dsn = "dbi:$platform:$database:$host:$port";
# PERL DBI CONNECT
$connect = DBI->connect($dsn, $user, $pw);
现在假设你创建了一个查询字符串,然后你想执行它:
#SELECT THE ORG SHORT NAMES
$select_org = "SELECT id, short_name FROM $org_table";
$org_handle = $connect->prepare($select_org);
$org_handle will have the resultset.
【讨论】: