1

我有一个脚本可以将我的 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";
              }   

谢谢

4

1 回答 1

1

您可以使用从命令行传递给 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 解释器...

于 2012-05-14T18:41:25.823 回答