【问题标题】:Add a line to top of csv file (first line) with PHP使用 PHP 在 csv 文件(第一行)的顶部添加一行
【发布时间】:2012-02-24 09:27:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: php csv fgetcsv


【解决方案1】:

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

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

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

【讨论】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-31
          • 2015-09-26
          • 2021-08-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多