【问题标题】:How can i store mysql databases in linux using shell scripting如何使用 shell 脚本在 linux 中存储 mysql 数据库
【发布时间】:2015-02-24 12:12:18
【问题描述】:

如何使用 shell 脚本在 linux 中存储 mysql 数据库

脚本:

mysql -uusername -hhostname -ppassword -e "show databases"

【问题讨论】:

  • 我想将所有数据库名称存储在一个数组中,这样我就可以调用它们并使用 for 循环对它们一一进行查询
  • @adarshhota shell_exec 是 PHP 函数,这个问题是关于 shell 脚本的

标签: mysql linux shell


【解决方案1】:

我想你想要这个:http://lists.mysql.com/mysql/96132

mysql> use mysql
Database changed
mysql> tee /tmp/mysqltee
Logging to file '/tmp/mysqltee'
mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv    |
| db              |
| host            |
| tables_priv     |
| user            |
+-----------------+
5 rows in set (0.02 sec)

mysql> notee
Outfile disabled.
mysql>

如果文件存在,输出将附加到现有文件(/tmp/mysqltee)。

如您所见,输出也显示在屏幕上。这可能不是 你想要什么,特别是如果输出很大......你可以使用

 mysql -e "select table_name from user_tables" database > output.txt

 mysql database < script.sql > output.txt

来自 os 命令行。 (您可能还需要使用 -u、-p 和/或 -h,使用 与“正常”启动 mysql 客户端时相同。)

【讨论】:

  • OP 想要从 shell 脚本中执行此操作,而不需要进入 mysql 本身
【解决方案2】:

也许对你有帮助

 #!/bin/bash
 results=($(mysql --user root -pwelcome -Bse "show databases;"))

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案3】:

以下代码会将所有数据库名称检索到一个名为 dbnames 的变量中。之后,它的迭代只会分别回显每个名称的字符串

#!/bin/bash
dbnames=`mysql --user=user --password=password -se "show databases;"`

for x in $dbnames;
do
    echo "There is a database called $x"
done;

【讨论】:

  • 如果我只想在数据库名称上显示值,我应该使用什么命令,假设是第二个数据库。
  • 在脚本中引入 requiredRow 和 count 变量。在循环中的每次迭代中递增计数,并将其与 requiredRow 值进行比较。使用requiredRow=$((requiredRow+1)) 执行增量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 2014-04-13
  • 2011-04-23
相关资源
最近更新 更多