Задать вопрос
Ответы пользователя по тегу Data Mining
  • Есть огромный csv-файл с данными (over 100k строк). Как все это добро на PHP, без SSH, загнать в MySQL?

    @lizergil
    Алгоритм в твоем случае будет таким:
    1. Удаление всех индексов из таблицы, куда планируется записывать данные.
    2. Открытие файла (fopen).
    3. Чтение m строк (fgets) пока не конец файла.
    4. Составление запроса в виде одной пачки (batch): INSERT INTO ... VALUES ( %row1%, %row2%, ... , %rowm%);
    5. Выполение запроса.
    6. Переход к шагу 3.
    7. Конец файла, закрытие файла, строим удаленные индексы.

    Если шаги 3 и 4 выполнять параллельно, то можно сэкономить на памяти.

    По поводу лимита: у тебя сложность алгоритма O(n) - т. е. линейно зависит от кол-ва строк в файле, ускорить (если недостаточно) поможет либо оптимизация (использования низкоуровневых утилит для вставки данных, но данные эти заранее должны быть подготовлены), либо использование более производительного железа (клиента, сети, сервера).
    Ответ написан
    4 комментария