2

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

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

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

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

非常感谢任何有关如何以最有效的方式执行此操作的反馈。谢谢你的时间 :)

4

4 回答 4

3

请试试这个..简单得多,直截了当。

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

你完成了。希望这可以帮助...

于 2015-10-09T09:03:42.307 回答
1
  1. 使用 fgetcsv 读取 CSV 文件。
  2. 关闭文件。
  3. 使用“w”(写入)模式打开文件。
  4. 写标题。
  5. 关闭文件。
  6. 使用“a”(追加)模式打开文件。
  7. 使用 fputcsv 写入 CSV 文件。瞧!
于 2012-02-24T09:32:49.663 回答
1

只需按照您提供的方式进行即可。没有简单的方法来扩展文件的开头而不是结尾。就像在纸上写字一样。在文本下方添加新行很容易,但您不能在文本上方书写。

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

于 2012-02-24T09:51:13.027 回答
0

为什么不在你的代码中手动定义标题,特​​别是如果每​​个文件都有相同的标题?如果您确实需要在处理之前将标头插入 CSV 文件,那么您应该考虑像这样使用sedsed -i 1i'"header 1","header 2"' file.csv

于 2012-02-24T09:51:18.370 回答