如何使用fputcsv在MySQL的csv中获取NULL值?

时间:2013-03-10 03:48:34

标签: php mysql null fputcsv

在PHP中,我使用fputcsv函数生成逗号分隔文件,以便在MySQL表中导入(使用LOAD DATA INFILE):

fputcsv($fcsv, array( 
    $id,
    $name,
    $optional
));

$optional可以为空,所以在MySQL中应该是NULL

在MySQL文档中,我读到要导入NULL值,它应该在csv文件中定义为\N

fputcsv函数会在其周围加上引号,因此MySQL认为它是字符串 "\N"

是否有解决方案,或者我应该忘记使用fputcsv

1 个答案:

答案 0 :(得分:0)

有点黑客,但你可以在输出中用\ N str_replace“\ N”:

//open temporary datastream for CSV output    
$fp = fopen("php://temp", "w");

//assuming $data is an array of arrays each of which is a record with \N 
//in place of nulls
foreach($data as $line) {
  fputcsv($fp, $line);
}

//read data back in to a string
rewind($fp);
$csv_data = fgets($fp);

//replace "\N" with \N
$csv_data = str_replace('"\N"', '\N', $csv_data);

//save to file
file_put_contents($csv_file_path, $csv_data);

可能不是最节省内存的,所以要小心大数据集,但应该有效......