разбить csv файл на несколько частей php
Как разделить файл CSV 6 ГБ на куски, используя переполнение стека
Я начинающий разработчик, изучающий php. Задача, которую мне нужно сделать, — это загрузить CSV-файл объемом 6 ГБ, содержащий данные, в базу данных. Мне нужно получить доступ к данным, т.е. прочитать файл через файл controller.php и затем разбить его на части. этот огромный CSV-файл в 10000 строк выводит CSV-файлы и записывает данные в эти выходные CSV-файлы. Я выполнил это задание уже неделю и пока не разбираюсь. Не могли бы вы, ребята, помочь мне в решении этого вопроса.
Решение
Я внес некоторые коррективы, так что мы создаем файл только когда rowCount = 0 и закрываем его, когда fileSize достигнуто Так же rowCount должен быть сброшен в 0 каждый раз, когда мы закрываем файл.
Другие решения
код скрипта:
convert.php
вы не сможете преобразовать такой объем данных за один запуск php, если он запускается из веб-формы, поскольку максимальное время выполнения сценариев php обычно составляет 30-60 секунд, и для этого есть причина — не пытайтесь выполнить событие расширить его до некоторого огромного числа. Если вы хотите, чтобы ваш скрипт работал даже в течение нескольких часов, вам нужно вызвать его из командной строки, но вы также можете вызвать его аналогичным образом из другого скрипта (например, у вашего контроллера)
Вы делаете это так:
Другой подход состоит в том, чтобы упорядочить работу / задания, которые вы можете поместить в очередь и которые могут выполняться процессом менеджера заданий с работниками, которые могут позаботиться о преобразовании, но я думаю, что это будет излишним для вашей потребности.
Имейте в виду, что если вы разделяете что-то и в другом месте присоединения у вас могут возникнуть проблемы с получением чего-то неправильного в этом процессе, метод, который обеспечит вам успешное разделение, передачу и объединение ваших данных, — это вычисление HASH, т.е. SHA-1 Целый файл 6 ГБ перед разделением, отправьте этот HASH в место назначения, где необходимо объединить все небольшие части данных, объедините их в один файл 6 ГБ, рассчитайте HASH этого файла и сравните с тем, который был отправлен. Имейте в виду, что каждая из небольших частей ваших данных после разделения имеет свой собственный заголовок, который будет CSV-файлом, который легко интерпретировать (импортировать), где в исходном файле у вас есть только одна строка заголовка.
Разбиение большого csv по 2000 строк
Есть файл XXX.csv состоящий из N числа строк, нужно посредством php разбить этот файл на несколько файлов по 2000 строк, т.е. создается 01.csv, 02.csv в которые идёт экспорт строк из XXX.csv
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вложения
tovar.zip (57.8 Кб, 7 просмотров) |
Разбиение CSV файла на много csv файлов по разделителю
Здравствуйте, есть файл в который нужно разделить, но не ровно по 30 строк например, а по 25, 23.
Разбиение на страницы большого объема текста
Здравствуйте. Подскажите пожалуйста, как можно реализовать постраничный вывод текста. Суть в том.
Разбиение большого числа и запись его в переменные
Необходимо разбить большое число на несколько чисел по 4 символа и присвоить переменным эти.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Постраничное разбиение большого объема текста PHP+MYSQL
Доброго времени суток. В БД хранится множество статей разного объема. При просмотре любая статья.
Разбиение recordset на страницы в Access 2000
hello, stolknulsa s problem. sozdalos vpechatlenije chto v Access 2000 nevozmozhno razbienie.
Вставка данных из большого количества внешних файлов csv
Приветствую Есть большая проблема и требуется помощь профи. Без предыстории не обойтись. Есть.
Добавление большого текста в табл. SQL-сервер 2000.
День добрый. Ситуция такова: есть табл. на сервере, в которой содержатся новости (около одной.
Разбить csv файл на несколько частей php
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов для системных администраторов Pyatilistnik.org. В прошлый раз мы с вами подробно разобрали 10 методов как открыть командную строку. В сегодняшней публикации я хочу вас научить разбивать строки в CSV файле на столбцы, которые потом можно использовать в файлах Excel. Уверен, что многие системные администраторы часто работаю с экспортными данными в формате CSV.
Постановка задачи
Бьюсь об заклад, что у 99% средних и крупных организаций в России инфраструктура построена на использовании Active Directory. Активный каталог замечательная вещь и легко интегрируется в различные сторонние сервисы. Самая частая задача администратора, это получение отчетов или выгрузок по определенным критериям, например:
Получить данные вы можете в разном виде, например в виде выдачи на самом экране, или же в сохраненный файл в формате txt или csv. CSV более распространенный, так как позволяет не только выгружать данные, но и еще их импортировать. Вроде бы все удобно, но есть одно но, когда вы захотите красиво перенести такие данные из csv, txt или экрана, у вас не будет форматирования или столбцов, все будет смешано в кучу, а это не удобно. Ниже я вас научу это обходить.
Структура файла CSV
Файл с разделителями-запятыми (CSV) представляет собой простой текстовый файл, который содержит список данных. Эти файлы часто используются для обмена данными между различными приложениями. Например, базы данных и менеджеры контактов часто поддерживают файлы CSV.
Эти файлы иногда могут называться символьно-разделенными значениями или файлами с разделителями-запятыми. В основном они используют запятую для разделения данных, но иногда используют другие символы, такие как точки с запятой. Идея состоит в том, что вы можете экспортировать сложные данные из одного приложения в файл CSV, а затем импортировать данные из этого файла CSV в другое приложение.
Вот пример такого строки с разделителями:
теперь представьте, что таких строк сотни или тысячи, а вы хотите все скопировать в ваш Exсel и по столбцам, вот тут вы и поймете, что одностроковый формат требует преобразования. Благо, это делается очень быстро и просто. Вот пример моего тестового csv файла.
Как csv разделить по столбцам в Excel
Первым инструментом, который позволит из csv получить красивые столбцы и разбиение по ним, будет Excel. Откройте в Excel ваш файл csv.
На первом окне мастера распределения текста по столбцам нажмите «Далее».
Далее вам необходимо указать по каким критериям производить разбивку по столбцам, на выбор у вас будет:
В моем примере CSV разделяет отдельные данные с помощью запятой. Тут же вы сразу видите, как это будет выглядеть в области «Образец разбора данных«.
Далее при необходимости вы можете указать формат (Общий, текстовый, дата) и диапазон к которому будет применяться ваше преобразование. Нажимаем «Готово«.
На выходе я получил красивую таблицу, где есть разбивка по столбца. В таком виде мне уже удобнее оперировать данными.
Далее вам остается сохранить файл в формате xlsx и радуемся жизни.
Как csv разделить по столбцам через Google Таблицы
Начнется переделывание формата CSV в формат Google Таблиц
На выходе вы получаете разделенный по столбцам документ.
Выбираете тип разделения, в моем случае запятая.
В результате чего они будут разбиты на аккуратные столбцы
Разделить большой файл Excel/Csv на несколько файлов на PHP или Javascript
У меня есть файл excel(file.xls)/csv(file.csv), который содержит/будет содержать сотни тысяч записей, даже миллионы, я думаю. Можно ли разделить этот файл на несколько файлов? Например, от file.xls до file1.xls, file2.xls, file3.xls и так далее.
Есть ли какие-нибудь библиотеки для использования? Возможно ли это на PHP? или как насчет javascript? О том, где я могу указать, сколько строк должно быть включено в каждый файл?
3 ответа
У меня есть файл excel с примерно 500 000 строк, и я хочу разделить его на несколько файлов excel, каждый из которых содержит 50 000 строк. Я хочу сделать это с pandas, чтобы это было быстрее и проще. есть идеи, как это сделать? спасибо Вам за вашу помощь
Я хочу разделить один большой файл Excel на несколько меньших и доступных файлов. Я уже пытался использовать этот код, но файлы недоступны: using (System.IO.StreamReader sr = new System.IO.StreamReader(path)) < int fileNumber = 0; while (!sr.EndOfStream) < int count = 0; using.
Быстрый и грязный способ разделения файла CSV на несколько файлов CSV
Да, это можно сделать в PHP и с CSV файлами. Вы в основном перебираете большой файл и разделяете каждую X строк, пересылая эти строки в другой файл.
Информацию о том, как открыть большой файл CSV в качестве итератора, вы найдете в этом ответе здесь:
Затем вам нужно разбить итератор на части по X строк. Это можно сделать в общих чертах здесь:
Просто вместо вывода в несколько списков
- .
HTML вы копируете в новые файлы. Это в основном работает так, как описано в:
Если первая строка исходного файла содержит заголовки столбцов, вас также может заинтересовать следующее:
Он просто показывает некоторые способы расширения / обработки входящего файла. Возможно, вам не понадобится полная абстракция, сделанная там, просто сохранение первой строки может уже сделать это.
Я думаю, вы также можете использовать «разделить по размеру файла»:
Похожие вопросы:
Я использую Oracle 10g EE в операционной системе Windows XP. У меня есть dmp-файл 5 GB на жестком диске. Я хочу разделить этот большой файл dmp на несколько файлов dmp, и после разделения я.
в проекте java я генерирую большой файл csv (около 500 Мб), и мне нужно разделить этот файл на несколько файлов размером не более 10 МБ каждый. Я нашел много похожих постов, но ни один из них не.
У меня есть файл excel с примерно 500 000 строк, и я хочу разделить его на несколько файлов excel, каждый из которых содержит 50 000 строк. Я хочу сделать это с pandas, чтобы это было быстрее и.
Я хочу разделить один большой файл Excel на несколько меньших и доступных файлов. Я уже пытался использовать этот код, но файлы недоступны: using (System.IO.StreamReader sr = new.
У меня есть большой файл json, содержащий массив объектов. Файл слишком велик (15 МБ), чтобы его можно было разобрать с помощью json_decode. Как я могу разделить этот массив-файл на несколько.
У меня есть один файл с 5000 строками, и я хочу разделить его на несколько файлов с
200 строками в каждом файле. Первый файл содержит строку заголовка, и эта строка также должна быть помещена в эти.
Я использую Pandas, чтобы разделить большой csv на несколько csv, каждый из которых содержит одну строку. У меня есть csv, имеющий 1 миллион записей, и использование приведенного ниже кода занимает.
У меня есть один большой файл csv, который я хотел бы разделить на несколько файлов с помощью условия. Это отрывок из файла: Well Zones Top Bottom E18 A 4273714.58 412435.8397 E18 B 99966532.9.
CSV файлы на PHP — создание и чтение
Формат CSV
Чтобы понимать суть вещей, нужно разобраться в спецификации CSV файлов, как устроен формат. Давайте коротко.
CSV (Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных.
Каждая строка файла — это одна строка таблицы.
Это все что нужно знать, чтобы работать с CSV!
Пример для рус. языка:
Пример для англ. языка:
Wiki-справка
Большинство программ под CSV понимают более общий формат DSV (delimiter-separated values — значения разделённые разделителем), допускающий использование иных символов в качестве разделителя. В частности, в русской и других локалях запятая по умолчанию зарезервирована под десятичный разделитель. Поэтому как разделитель используется точка с запятой или табуляция (формат TSV).
Сегодня под CSV понимают набор значений, разделенных какими угодно разделителями, в какой угодно кодировке с какими угодно окончаниями строк. Это значительно затрудняет перенос данных из одних программ в другие, несмотря на всю простоту формата.
Создание CSV файла в PHP
Для создания CSV файла, достаточно создать текстовый файл, используя в нужных местах необходимые разделители столбцов и строк.
Важным моментом, является кодировка файла. Для корректного отображения кириллицы следует использовать кодировку cp1251 (windows-1251).
Разделитель колонок
Разделитель строк
Также, для разделения строки, может использоваться просто \n (перенос строки, LF). В этом случае, перенос строки внутри значения колонки должен обозначаться как \r (возврат каретки CR).
Функция для создания CSV файла
меню
Чтение CSV файла в PHP
Вариант на базе функции str_getcsv() :
Если такую конвертацию нужно сделать программно, смотрите в сторону онлайн конвертеров с API или готовых библиотек.
Сталкивались с такой задачей и знаете более универсальный способ? Прошу поделиться в комментариях.
Тема, конечно, интересная. Только этот код в реальных условиях работать не будет.
1) Разделитель поля может быть любой. Например, ‘\’, ‘|’ или ещё что похуже.
2) Символ ограничителя поля может быть как двойная, так и одинарная ковычка.
3) Неплохо бы использовать unset в коде. Память на сервере всё-таки не резиновая. Одно дело загрузка файла с пару сотен строк кода, а другое если их пару десятков миллионов.
2) Для текущего кода (обоих) это учитывается: в первом создается строка с двойной кавычкой и только. Во втором строка парсится PHP функцией str_getcsv() которая обе кавычки понимает.
3) В каком месте там unset по твоему поможет хорошо избавится от потерь памяти? Если у тебя файл выходит за пределы памяти, что редкость с текущими параметрами серверов, то это пожалуй экстра случай и подход уже нужен будет принципиально другой. Файл читать или записывать нужно будет частями или построчно, а не так целиком. По аналогии ты в ВП запихай 50 000 рубрик и все приехали, нужно будет костыли вставлять для нормальной работы. Но ВП почему-то самая популярная CMS, как же так? Я не писал код на все случаи жизни, код покрывает 80% случаев, остальное уже требует отдельного подхода, а этот код можно взять за основу.
Этот код в реальных условиях у меня работает! Может там и есть баги, но я их не встречал.
П.С. просмотрел второй код, добавил unset() маловероятно что много толку от этого, но лишним не будет.
Не «суй туда какой угодно разделитель», а все возможные разделители для csv файлов. Ты бы ещё менеджеру предложил указывать разделитель для файла, который он загружает
«с текущими параметрами серверов». Поверь, кривым кодом можно положить сервер даже с очень хорошими характеристиками. Я обычно беру за правило, если переменная больше не будет использоваться она должна умереть (или обнулиться). Когда поработаешь с хайлоудом, то начинаешь понимать цену памяти)
И вообще, если пишешь рабочую программу, нужно это делать хорошо, а не в стиле «мой первый скрипт»!
Демогогия это, ты реальную проблему покажи, так я её не вижу.
П.С. я люблю стиль «мой первый скрипт». Этот сайт как раз в таком стиле написан, пока все устраивает
Важным моментом, является кодировка файла. Для корректного отображения кириллицы следует использовать кодировку cp1251 (windows-1251).