Добавьте строку в начало csv-файла (первая строка) с PHP - PullRequest
2 голосов
/ 24 февраля 2012

Нужно обрабатывать большие CSV-файлы с помощью PHP. Работа с fgetcsv и производительностью кажется довольно хорошей Для еще лучшей / более быстрой обработки я бы хотел, чтобы в файлах csv были имена столбцов в первой строке, которых сейчас нет.

Теперь я хотел бы добавить верхнюю строку с именами столбцов в файл csv с PHP перед обработкой файлов с помощью fgetcsv.

Есть ли способ легко добавить строку в начало файла с помощью php? Или это будет означать, что я должен использовать подход, подобный приведенному ниже?

  1. Элемент списка
  2. Элемент списка
  3. создать временный файл
  4. добавить имена столбцов в этот временный файл
  5. читать исходное содержимое файла csv
  6. поместить оригинальное содержимое csv во временный файл
  7. удалить оригинальный файл
  8. переименовать временный файл

Любые отзывы о том, как сделать это наиболее эффективным способом, высоко ценятся. Спасибо за ваше время :) 1025 *

Ответы [ 4 ]

3 голосов
/ 09 октября 2015

Пожалуйста, попробуйте это .. гораздо проще и прямо к делу.

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

Все готово.Надеюсь, это поможет ...

1 голос
/ 24 февраля 2012

Просто сделайте так, как вы указали.Нет простого способа расширить файл в начале, а не в конце.это как писать на бумаге.легко добавлять новые строки под вашим текстом, но вы не можете писать над своим текстом.

Не используйте fopen($file, "r+") или fopen($file, "c"), так как это удалит существующие строки в начале или даже все строки вашего файла.

1 голос
/ 24 февраля 2012
  1. Считайте файл CSV, используя fgetcsv.
  2. Закройте файл.
  3. Откройте файл в режиме «w» (запись).
  4. Напишите заголовки.
  5. Закройте файл.
  6. Откройте файл в режиме «a» (добавление).
  7. Записать файл CSV с помощью fputcsv. Voila!
0 голосов
/ 24 февраля 2012

Почему бы не определить заголовок в вашем коде вручную, особенно если каждый файл имеет одинаковый заголовок?Если вам действительно нужно вставить заголовок в файлы CSV перед их обработкой, возможно, вам следует рассмотреть возможность использования sed , например: sed -i 1i'"header 1","header 2"' file.csv

...