2010-11-29 2 views
2

내가 CSV 파일에 테이블을 덤프이 쿼리를 사용 INTO ... SELECT 후 파일을 저장할 수 있습니다 mysql어떻게 OUTFILE 'result.csv'

어떻게 내 사이트의 루트에 저장할 수 있습니까? result.csv 대신에

답변

1

당신이 그것을 저장하려는 경로 제공 :

$sql = "SELECT * 
     INTO OUTFILE '/path/to/your/site/result.csv' 
     FIELDS TERMINATED BY ';' 
     FROM tableName"; 
+0

미안 해요, 난 그걸 시도하기 전에 시도했습니다 – cranberies

+1

SELECT ... INTO OUTFILE 문은 주로 매우 신속하게 서버 컴퓨터의 텍스트 파일에 테이블을 덤프 수 있도록하기위한 것입니다. 결과를 서버 호스트가 아닌 다른 호스트에서 작성하려는 경우 일반적으로 서버 호스트의 파일 시스템에 상대적인 파일 경로를 작성할 수 없으므로 SELECT ... INTO OUTFILE을 사용할 수 없습니다. 그러나 MySQL 클라이언트 소프트웨어가 원격 시스템에 설치되어있는 경우 mysql -e "SELECT ..."> file_name과 같은 클라이언트 명령을 사용하여 클라이언트 호스트에서 파일을 생성 할 수 있습니다. – cranberies

+1

MySQL에는이 파일을 저장하려는 경로에 대한 쓰기 권한이 있어야합니다. 절대적으로 필요한 경우 my.cnf에서 user = root 행으로 mysql을 시작하고 동일한 명령을 실행하십시오. – shantanuo

0

이 코드는 CSV 파일로 MySQL의 테이블을 내보낼 수 있습니다, 내가 큰 테이블을 테스트 한

<?php 
// tested with success 
$db_name  = "db_name"; 
$db_password = "pass"; 
$db_link  = mysql_connect("localhost", "root", $db_password); 
mysql_select_db($db_name, $db_link); 
mysql_query("SET NAMES UTF8"); 

$table = "table_name"; 

function assoc_query_2D($sql, $id_name = false){ 
    $result = mysql_query($sql); 
    $arr = array(); 
    $row = array(); 
    if($result){ 
    if($id_name == false){ 
     while($row = mysql_fetch_assoc($result)) 
     $arr[] = $row; 
    }else{ 
     while($row = mysql_fetch_assoc($result)){ 
     $id = $row['id']; 
     $arr[$id] = $row; 
     } 
    } 
    }else 
     return 0; 

    return $arr; 
} 

function query_whole_table($table, $value = '*'){ 
    $sql = "SELECT $value FROM $table"; 
    return assoc_query_2D($sql); 
} 

$export_str = ""; 
$result = query_whole_table($table); 

foreach($result as $record){ 
    $export_str .= implode(";",$record) . "\n"; 
} 
// add time to fileName 
$date = time(); 
// output the file 
// we can set a header to send it directly to the browser 
file_put_contents($date.'_'.$table."_export.csv", $export_str); 
?>