使用PHP在csv文件(第一行)的顶部添加一行

时间:2012-02-24 09:27:01

标签: php csv fgetcsv

需要使用php处理大型csv文件。 使用fgetcsv和性能似乎相当不错。为了更好/更快的处理,我希望csv文件在第一行有列名,现在缺少。

现在我想在使用fgetcsv处理文件之前,用PHP将带有列名的顶行添加到csv文件中。

有没有办法轻松地在php的顶部添加一行?或者这是否意味着我必须采取如下方法?

  1. 列表项
  2. 列表项
  3. 创建临时文件
  4. 将列名添加到此临时文件
  5. 阅读原始csv文件内容
  6. 将原始csv内容放入临时文件
  7. 删除原始文件
  8. 重命名临时文件
  9. 我们非常感谢您提供有关如何以最有效的方式执行此操作的任何反馈。谢谢你的时间:))

4 个答案:

答案 0 :(得分:3)

请尝试这个......更加简单直接。

  $file = 'addline.csv';
  $header = "Name, IP,  Host, RAM, Task, NS \r\n";
  $data = file_get_contents($file);
  file_put_contents($file, $header.$data);

你完成了。希望这会有所帮助...

答案 1 :(得分:1)

  1. 使用fgetcsv读取CSV文件。
  2. 关闭文件。
  3. 使用“w”(写入)模式打开文件。
  4. 写标题。
  5. 关闭文件。
  6. 使用“a”(追加)模式打开文件。
  7. 使用fputcsv写入CSV文件。 瞧!

答案 2 :(得分:1)

按照您提供的方式进行操作。没有简单的方法来扩展文件的开头而不是结束。这就像写在纸上。在文本下方添加新行很容易,但不能在文本上方写入。

请勿使用fopen($file, "r+")fopen($file, "c"),因为这会删除文件开头或甚至所有行的现有行。

答案 3 :(得分:0)

为什么不手动在代码中定义标头,特别是如果每​​个文件都有相同的标头? 如果您确实需要在处理之前将标题插入CSV文件,则可以考虑使用sed,如下所示:sed -i 1i'"header 1","header 2"' file.csv