2013-03-10 1 views
0

В PHP Я использую функцию fputcsv для получения разделенных запятыми файл для импорта в MySQL-таблицы (используя LOAD DATA INFILE):Как получить значения NULL в csv для MySQL с fputcsv?

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

$optional может быть пустым, так в MySQL это должно быть NULL

В документации MySQL я прочитал, что для импорта значения NULL он должен быть определен как \N в csv-файле.

Но функция fputcsv ставит кавычки вокруг него, так что MySQL считает, что это строка"\N".

Есть ли решение для этого, или я должен забыть об использовании fputcsv?

+0

Вы попробовали '' \\ N "'? – MatRt

+0

да, не имеет значения, fputcsv по-прежнему ставит двойные кавычки вокруг него – Dylan

ответ

0

хак, но вы могли бы просто str_replace в «\ N» с \ 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); 

не может быть наиболее эффективно использует память либо так быть осторожными для больших наборов данных, но должен работать ...