Добавьте линию на вершину файла CSV (первая строка) с PHP
Вопрос
нужно обрабатывать большие файлы CSV с PHP. Работа с fgetcsv и производительностью кажется довольно хорошим.Для еще лучшего / быстрой обработки я хотел бы, чтобы файлы CSV имеют имена столбцов в первой строке, которые отсутствуют прямо сейчас.
Теперь я хотел бы добавить верхнюю строку с именами столбцов в файл CSV с PHP перед обработкой файлов с FGETCSV.
Есть ли способ добавить линию верхнюю часть файла с PHP легко?Или это значит, что я должен сделать подход, как только ниже?
- Список элемент
- Список элемент
- Создать файл Temp
- Добавьте имена столбцов в этот файл Temp
- Прочитайте оригинальное содержимое файла CSV
- Поместите исходное содержимое CSV в TEMP-файл
- Удалить Оригинальный файл
- Переименовать файл temp
Любая отзыва о том, как это сделать самым эффективным способом высоко ценится.Спасибо за ваше время :)
Решение
- Прочитайте файл csv с помощью fgetcsv.
- Закрыть файл.
- Откройте файл, используя режим «W» (WRITE).
- Напишите заголовки.
- Закрыть файл.
- Откройте файл, используя режим «A» (Append).
- Написать файл CSV с помощью fptcsv. 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