PHPを使用してCSVファイル(1行目)の上に行を追加する
質問
PHPで大きなCSVファイルを処理する必要があります。 FGETCSVとパフォーマンスを扱うことはかなり良いようです。さらに良い/より速い処理のために、私はCSVファイルが最初の行の列名を持ちたいのですが、これは今欠けています。
今すぐ、FGETCSVを使用してファイルを処理する前に、PHPを使用してCSVファイルに列名を持つトップ行を追加します。
PHPを使ってファイルの上部に線上を追加する方法はありますか?それとも私は以下のようなアプローチを取らなければならないということですか?
- リスト項目
- リスト項目
- TEMPファイルを作成する
- この一時ファイルに列名を追加
- オリジナルのCSVファイルの内容
- オリジナルのCSVの内容をTEMPファイルに入れる
- 元のファイルを削除
- TEMPファイルの名前変更
最も効果的な方法でこれを行う方法に関するフィードバックは高く評価されています。あなたの時間をありがとう:)
解決
- fgetcsvを使用してCSVファイルを読み込みます。
- ファイルを閉じます。
- "w"(書き込み)モードでファイルを開きます。
- ヘッダーを書きなさい。
- ファイルを閉じます。
- "a"(append)モードでファイルを開きます。
- fputcsvを使ってCSVファイルを書き込みます。 Voila!
他のヒント
これを試してください。
$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