2013-08-04 2 views
2

다음을 사용하여 ssv 파일을 CSV 형식으로 덤프합니다. $ file_path = "/tmp/app_users.csv";SQL 파일의 CSV 덤프에서 N을 대체합니다.

그러나 users 테이블의 특정 필드는 null이며, csv 출력의 일부 필드는 \ N으로 표시됩니다. 문자열 "NULL"로 바꾸길 원합니다. 나는 str_replace를 사용하려고 시도했으나, 모든 행 다음에 여분의 빈 행을 신비하게 삽입합니다.

+0

FIELDS ESCAPED BY 문자가 쿼리에서 비어 있으면 문자가 이스케이프되지 않고 NULL이 \ N이 아닌 NULL로 출력됩니다. [공식 문서보기] (http://dev.mysql.com/doc/refman/5.6/en/select-into.html) – uKolka

답변

2

FIELDS ESCAPED BY 문자가 비어 있으면 (쿼리에서) 문자가 이스케이프되지 않고 NULL이 \ N이 아닌 NULL로 출력됩니다.

그래서 당신이 원하는 결과를 제공해야합니다 다음

$sql = "SELECT 'id','username','name','email', 
    'phone_number','city', 
    'batch_code','course_type' UNION ALL 
    SELECT id, username, name, email, 
    phone_number, city, batch_code, course_type 
    FROM users INTO OUTFILE '".$file_path."' ". 
     "FIELDS TERMINATED BY ',' 
     ENCLOSED BY '\"' 
     ESCAPED BY '' 
     LINES TERMINATED BY '\r\n'"; 

그것은 그것을 할 수있는 하나의 방법이고 당신이 다른 문자가 탈출해야하는 경우이를 사용하지 않을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 쿼리가 작동하지 않습니다. ( –

+0

@SonuJha 죄송합니다. 붙여 넣기를하십시오. 그것은 잘못된 것입니다. 대답에있는 쿼리를 수정했습니다. 나를 위해 작동합니다. – uKolka

관련 문제