【问题标题】:How to get NULL values in csv for MySQL with fputcsv?如何使用 fputcsv 在 MySQL 的 csv 中获取 NULL 值?
【发布时间】:2013-03-10 03:48:33
【问题描述】:

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

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

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

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

但是fputcsv 函数在它周围加上了引号,所以 MySQL 认为它是 字符串 "\N"

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

【问题讨论】:

  • 你试过"\\N"吗?
  • 是的,没有区别,fputcsv 仍然在它周围加上双引号

标签: php mysql null fputcsv


【解决方案1】:

有点小技巧,但您可以在输出中将“\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);

可能也不是最节省内存的,因此请注意大型数据集,但应该可以...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2012-03-23
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多