题
需要用php处理大型csv文件。使用 fgetcsv 和性能似乎相当不错。为了更好/更快的处理,我希望 csv 文件在第一行有列名称,但现在缺少。
现在,我想在使用 fgetcsv 处理文件之前,使用 PHP 将带有列名称的顶行添加到 csv 文件中。
有没有一种方法可以轻松地用 php 在文件顶部添加一行?或者这是否意味着我必须采取如下方法?
- 项目清单
- 项目清单
- 创建一个临时文件
- 将列名称添加到此临时文件中
- 读取原始csv文件内容
- 将原始 csv 内容放入临时文件中
- 删除原文件
- 重命名临时文件
任何有关如何以最有效的方式做到这一点的反馈都将受到高度赞赏。谢谢你的时间 :)
解决方案
- 使用FGETCSV读取CSV文件。
- 关闭文件。
- 使用“w”(写)模式打开文件。
- 写标题。
- 关闭文件。
- 使用“a”打开文件(附加)模式。
- 使用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
不隶属于 StackOverflow