1

mysqlデータベースを別のサーバーと同期/出力するスクリプトがあります。

このSQLクエリをシェルで呼び出す方法を知っています。ただし、このスクリプトの出力をphpからシェルスクリプトに変換して、以下に示す形式(基本的に「|」で区切られた値といくつかの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演算子として設定し、煩わしいCONCAT関数を使用する代わりにSQL標準のダブルパイプで文字列を結合できるようにします...その後、結果セットはSQLクエリで直接文字列を連結します。このようにして、phpインタープリターをインストールしなくてもbashスクリプトからこのコマンドを実行できます...

于 2012-05-14T18:41:25.823 に答える