2012-05-14 83 views
1

我有一個腳本來同步/輸出我的mysql數據庫與另一臺服務器。shell腳本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"; 
       } 

感謝

+1

shell腳本不會讓您輕鬆地與數據庫交談。只需將你的php腳本變成一個shell腳本(在頂部添加'#!/ usr/bin/php'並使其可執行。 –

+0

真的很棒的建議太marc!讓我的生活更簡單:) – user1394013

回答

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 

第一套,請在MySQL中將管道設置爲concat運算符,以便您可以使用SQL標準雙管道連接字符串,而不是使用煩人的CONCAT函數...之後,結果集直接在SQL查詢中進行串聯。 通過這種方式,您可以從bash腳本執行此命令,而無需安裝php解釋器...

+0

真棒的建議,甚至沒有知道這是可能的。非常感謝。 – user1394013