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

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

有没有一种方法可以轻松地用 php 在文件顶部添加一行?或者这是否意味着我必须采取如下方法?

  1. 项目清单
  2. 项目清单
  3. 创建一个临时文件
  4. 将列名称添加到此临时文件中
  5. 读取原始csv文件内容
  6. 将原始 csv 内容放入临时文件中
  7. 删除原文件
  8. 重命名临时文件

任何有关如何以最有效的方式做到这一点的反馈都将受到高度赞赏。谢谢你的时间 :)

有帮助吗?

解决方案

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

其他提示

请尝试..更简单,直接到这一点。

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

你完成了。希望这有助于...

按照你提供的方式去做就可以了。没有简单的方法可以在开头而不是末尾扩展文件。就像写在纸上一样。在文本下方添加新行很容易,但不能在文本上方书写。

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

为什么不手动定义代码中的标题,特别是如果每个文件具有相同的标题? 如果您真的需要在处理之前将标题插入CSV文件,也许您应该考虑使用sed 这样:sed -i 1i'"header 1","header 2"' file.csv

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top