2014-04-30 59 views
-2

以下代碼有助於將特定表從mysql導出爲CSV格式。 但是我需要的代碼可以幫助導出到csv 以及來自mysql的所有表。請任何人都有代碼。請分享如何將mysql導出到csv包含所有表?

<?php 
    $conn = mysql_connect('localhost', 'xxxx', 'yyyy') or die(mysql_error()); 
    mysql_select_db('zzzz', $conn) or die(mysql_error($conn)); 

    $query = sprintf('SELECT * FROM TABLENAME'); 
    $result = mysql_query($query, $conn) or die(mysql_error($conn));  

    header('Content-Type: text/csv'); 
    header('Content-Disposition: attachment;filename=export.csv'); 

    $row = mysql_fetch_assoc($result); 
    if ($row) { 
     echocsv(array_keys($row)); 
    }  

    while ($row) { 
     echocsv($row); 
     $row = mysql_fetch_assoc($result); 
    } 

    function echocsv($fields) 
    { 
     $separator = ''; 
     foreach ($fields as $field) { 
      if (preg_match('/\\r|\\n|,|"/', $field)) { 
       $field = '"' . str_replace('"', '""', $field) . '"'; 
      } 
      echo $separator . $field; 
      $separator = ','; 
     } 
     echo "\r\n"; 
    } 
?> 
+0

您是否考慮過通過'INFORMATION_SCHEMA.TABLES'進行循環? –

回答

0

使用此代碼SHOW TABLES查詢返回所選數據庫中的所有表。

$tablesRes = mysql_query('SHOW TABLES',$conn); 
while($row = mysql_fetch_row($tablesRes)){ 
    $tables[] = $row[0]; 
} 

header('Content-Type: text/csv'); 
header('Content-Disposition: attachment;filename=export.csv'); 

foreach($tables as $table){ 
    $query = 'SELECT * FROM '.$table; 
    $result = mysql_query($query, $conn) or die(mysql_error($conn)); 
    //your csv code here 
}