我有一个脚本可以将我的 mysql 数据库与另一台服务器同步/输出。
我知道如何在 shell 中调用此 SQL 查询。但是,是否可以将此脚本的输出从 php 转换为 shell 脚本以保持如下所示的格式(基本上由“|”和一些 URL 分隔的值)?我需要以下特定格式的输出:
$sql=mysql_query("SELECT a, b, c, d, e FROM tableA LEFT JOIN tableB USING (a)");
while ($res=mysql_fetch_array($sql))
{
echo $res['a']."|".$res['b']."|".$res['c']."|http://www.url.com/".$res['e']."/".$res['a'].".php|http://www.url.com/link/".urlencode($res['b'])."\n";
}
谢谢
最佳答案
您可以通过从命令行传递给 mysql 的简单查询来完成所有这些连接:
mysql -u username -ppassword -D dbname << eof
SET sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT';
SELECT a || '|' || b || '|' || c || '|http://www.url.com/' || e || '/' || a || '.php|http://www.url.com/link/' || b AS joinedColum FROM tableA LEFT JOIN tableB USING (a);
eof
第一个 SET,在 MySQL 中将管道设置为 concat 运算符,这样您就可以使用 SQL 标准双管道连接字符串,而不是使用烦人的 CONCAT 函数......之后结果集是直接在 SQL 查询中连接字符串. 通过这种方式,您可以从 bash 脚本执行此命令,而无需安装 php 解释器 ...
关于mysql - shell脚本mysql输出转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589000/