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 ファイルにヘッダーを挿入する必要がある場合は、次のようにsedを使用することを検討する必要があります。sed -i 1i'"header 1","header 2"' file.csv

于 2012-02-24T09:51:18.370 に答える