从shell脚本中读取MySQL结果

时间:2014-12-29 10:20:44

标签: mysql wordpress shell vagrant

起初,我是一个非常新的shell脚本,所以请不要拍我! :)

我尝试做什么。我有一个多站点WordPress安装,我喜欢编写一个脚本,能够通过在shell脚本中传递站点id作为参数从架构中导出特定的表,或者通过设置一个选项来导出所有{{1模式的表。

为了识别哪个表集是针对哪个站点,WordPress会更改每个表集的前缀。所以在示例中执行以下操作:

selected

此外,WordPress将博客ID存储在名为wp_options wp_1_options ... wp_x_options

的特殊表中

因此,从我的shell脚本中运行以下代码:

wp_blogs

我得到以下结果

mysql -uUSER -pPASS -e 'SELECT `blog_id` AS `ID`, `path` AS `Slug` FROM `wp`.`wp_blogs`'

那么,现在实际的问题是,我如何逐行解析MySql结果,以获取+----+---------------------------+ | ID | Slug | +----+---------------------------+ | 1 | / | | 2 | /site-2-slug/ | | 4 | /site-4-slug/ | | 5 | /site-5-slug/ | | 6 | /site-6-slug/ | | 7 | /site-7-slug/ | | 8 | /site-8-slug/ | | 9 | /site-9-slug/ | | 10 | /site-10-slug/ | +----+---------------------------+ ID信息?

附注1 :整个脚本已经生成并以某种方式手动运行。我现在需要这些信息,以便自动化甚至更远的导出脚本。

*旁注2 :MySql通过Slug ssh执行,如下所示:*

Vagrant

1 个答案:

答案 0 :(得分:2)

您可以使用INTO将结果保存到文件中,如下所示:

SELECT blog_id, path FROM wp.wp_blogs
INTO OUTFILE '/tmp/blogs.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

然后你可以使用/ wak / simple while循环逐行处理它。假设您要搜索网站并将其替换为mysite,您可以执行以下操作:

awk -F',' '{print "Id: " $1 ", path: "$2}' /tmp/blogs.csv  ##or simply cat the file.