我有一个脚本来同步/输出我的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";
}
感谢
答案 0 :(得分:1)
您可以使用从命令行传递给mysql的简单Query来执行所有这些连接:
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解释器......