【问题标题】:CSV comma delimited file from mysql table来自 mysql 表的 CSV 逗号分隔文件
【发布时间】:2017-06-24 08:48:54
【问题描述】:

我编写了一个脚本来将 mysql 表导出到 csv 文件。 除了将其导出为制表符分隔文件外,它的效果很好。 我需要用逗号分隔。 我尝试了 INTO ONFILE 但无法使其工作。 所以这就是我现在所拥有的:

$fh = fopen(__DIR__ . '/Stock.csv', 'w');

$result = mysql_query("SELECT * FROM table ORDER BY SKU");   
while ($row = mysql_fetch_array($result)) {          
    $num = mysql_num_fields($result) ;    
    $last = $num - 1;
    for($i = 0; $i < $num; $i++) {            
        fwrite($fh, $row[$i]);                       
        if ($i != $last) {
            fwrite($fh, "\t");
        }
    }                                                                 
    fwrite($fh, "\n");
}
fclose($fh);

如何修改它以使其变为逗号分隔?

【问题讨论】:

  • 停止使用 PHP 已弃用的 mysql_ API

标签: php mysql


【解决方案1】:

要将数据从数据库输出到 CSV,您应该使用:
http://php.net/manual/en/function.fputcsv.php
要使用逗号分隔数据,您可以使用 implode 方法:
Wrap CSV values generated by PHP fputcsv() with " "
请仔细阅读这两个链接。我相信你会得到你需要的。

【讨论】:

    【解决方案2】:

    您可以使用简单的 MySQL 语句 - SELECT + INTO OUTFILE,它会写入带有一些选项的类似 CSV 的文件。

    SELECT *
    INTO OUTFILE 'Stock.csv'
    FIELDS TERMINATED BY ','
    FROM table
    ORDER BY SKU;
    

    【讨论】:

    • 在过去的一个小时里我一直在尝试这样做,但由于某种原因我无法让它工作。我没有收到任何错误,但没有任何内容写入文件。 $Result = "SELECT * INTO OUTFILE '/Stock.csv' FIELDS TERMINATED BY ',' FROM table ORDER BY SKU"; mysql_query ($Result, $Link);
    • 您有文件权限吗?或者,也许同名的文件已经存在。
    • '/Stock.csv'... 在文件系统根目录中?难怪,你可能没有权限
    • 文件已创建,但没有写入任何内容。如何添加权限?
    • GRANT FILE ON *.* TO '&lt;user_name&gt;'@'&lt;host_name&gt;';
    【解决方案3】:

    你可以使用这个功能:

    http://www.php.net/manual/de/function.fputcsv.php

    使用数组在csv文件中插入一行并将分隔符设置为“,”。

    $file = fopen("data.csv","w");
    $a = array("value1","value2","value3");
    fputcsv($file,$a,",");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 2012-04-11
      • 2021-05-30
      • 2017-02-09
      • 2013-07-03
      相关资源
      最近更新 更多