mysql резка

Discussion in 'PHP' started by C.C.C.P, 5 Jun 2009.

  1. C.C.C.P

    C.C.C.P Banned

    Joined:
    26 Oct 2008
    Messages:
    44
    Likes Received:
    7
    Reputations:
    -1
    Нужно разрезать базу на несколько частей, подскажите какие нибудь проги или скрипты,
    пробовал
    Файлы режуться, но после этого не открываются поврежденный архив....
     
  2. aka PSIH

    aka PSIH Elder - Старейшина

    Joined:
    7 Feb 2006
    Messages:
    543
    Likes Received:
    274
    Reputations:
    51
    $file_out_ras = 'gz'; #выходной файл расширение
    txt поставь, или файлы текст.редактором открывай ;)
     
  3. C.C.C.P

    C.C.C.P Banned

    Joined:
    26 Oct 2008
    Messages:
    44
    Likes Received:
    7
    Reputations:
    -1
    Для чего? мне их потом лить через dumper...
     
  4. aka PSIH

    aka PSIH Elder - Старейшина

    Joined:
    7 Feb 2006
    Messages:
    543
    Likes Received:
    274
    Reputations:
    51
    у тебя скрипт создает не архив .gz, а просто файл с расширением .gz. поэтому архиватор и пишет что архив поврежден..
     
  5. C.C.C.P

    C.C.C.P Banned

    Joined:
    26 Oct 2008
    Messages:
    44
    Likes Received:
    7
    Reputations:
    -1
    А как сделать что бы архив .gz? или может уже есть готовые скрипты для резки? подкинте ссылки:)
     
  6. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    phpmyadmin может загружать по частям файл, задавая смещение + поддерживает сжатие.
     
    #6 FireFenix, 5 Jun 2009
    Last edited: 5 Jun 2009
  7. C.C.C.P

    C.C.C.P Banned

    Joined:
    26 Oct 2008
    Messages:
    44
    Likes Received:
    7
    Reputations:
    -1
    Мне не загружать части, а разбить одну БД на несколько частей
     
  8. aka PSIH

    aka PSIH Elder - Старейшина

    Joined:
    7 Feb 2006
    Messages:
    543
    Likes Received:
    274
    Reputations:
    51
    зачем тебе её разбивать? имхо разбивать только вручную, т.к скрипты разобьют дамп криво(запрос на несколько частей поделят), потом при импорте ошибки будут...

    p.s: пока ты тут ответов ждешь уже можно было все вручную разбить, и запаковать в .gz как тебе надо...
    p.s2: если у тебя с импортом больших файлов проблеммы посмотри, sypex dumper и это
     
  9. C.C.C.P

    C.C.C.P Banned

    Joined:
    26 Oct 2008
    Messages:
    44
    Likes Received:
    7
    Reputations:
    -1
    Пробовал ей, 140 мб и все дальше говорит не возможно соединится с удаленным URL
    Если увеличить
    то выдает ошибку... где то на 70 мб и дальше не идет...


    А вручную 70 тыс строк... это сложно...даже до конца страницы дойдти проблема минут 5 думает
     
    #9 C.C.C.P, 5 Jun 2009
    Last edited: 5 Jun 2009
    2 people like this.
  10. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Мой вариант твоего скрипта.

    Для текстовых файлов.

    PHP:
    <?php

    set_time_limit
    (0);
    $file_in 'file.sql'#входной файл
    $file_out['name'] = 'file_'#выходной файл имя
    $file_out['ext'] = '.sql'#выходной файл расширение
    $count 10000#колличество строк в одном выходном файле

    if(file_exists($file_in))

      
    $content file($file_in); 
    } else {
      die(
    'Не найден входной файл ' $file_in);
    }

    echo(
    'Всего - ' count($content) . ' строк');

    for (
    $c 0$c < (count($content) / $count); $c++)
    {
      
    $file fopen($file_out['name'] . $c $file_out['ext'], 'w');  
        
      for(
    $i 0$i $count$i++)
      {
        
    fprintf($file'%s'$content[$c $count $i]);
      }
      
      
    fclose($file);
    }

    echo(
    '<hr>' $c ' файлов создано<br>Работа завершена.');

    ?>
    Для gz файлов.

    PHP:
    <?php

    set_time_limit
    (0);
    $file_in 'file.gz'#входной файл
    $file_out['name'] = 'file_'#выходной файл имя
    $file_out['ext'] = '.gz'#выходной файл расширение
    $count 10000#колличество строк в одном выходном файле

    if(file_exists($file_in))

      
    $content gzfile($file_in); 
    } else {
      die(
    'Не найден входной файл ' $file_in);
    }

    echo(
    'Всего - ' count($content) . ' строк');

    for (
    $c 0$c < (count($content) / $count); $c++)
    {
      
    $file gzopen($file_out['name'] . $c $file_out['ext'], 'w');  
        
      for(
    $i 0$i $count$i++)
      {
        
    gzwrite($file$content[$c $count $i]);
      }
      
      
    gzclose($file);
    }

    echo(
    '<hr>' $c ' файлов создано<br>Работа завершена.');

    ?>
    P.S. Хорошо отформатированный код - залог хорошей отладки и больше шансов, что кто-то его посмотрит
    P.S.S Как показала практика - результат всёравно нужно будет допиливать, или добавлять ещё условия разбиения, или формирование всех запросов 1 запрос = 1 строка
     
    #10 FireFenix, 5 Jun 2009
    Last edited: 5 Jun 2009
  11. C.C.C.P

    C.C.C.P Banned

    Joined:
    26 Oct 2008
    Messages:
    44
    Likes Received:
    7
    Reputations:
    -1
    Спасибо попробую
     
  12. C.C.C.P

    C.C.C.P Banned

    Joined:
    26 Oct 2008
    Messages:
    44
    Likes Received:
    7
    Reputations:
    -1
    file_00 проходит file_01 неуказана кодировка....

    file_00 выглядет так... file_01 сразу дамп идет


    Как сделать что бы в file_01 была нормальная кодировка, пробовал просто прибавить в начало строку
    не работает(((
     
  13. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Как я уже гвоорил:
    1) Чтобы все запросы были корректы, они должны быть однострочными (т.е. 1 запрос = 1 строка)
    2) Кодировка в основном зависит от используемого средства для загрузки дампа и кодировки файла.
    Для принудельной установки кодировки используй /showpost.php?p=1310245&postcount=642