Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

05.06.2009, 11:23
|
|
Banned
Регистрация: 26.10.2008
Сообщений: 45
Провел на форуме: 193422
Репутация:
8
|
|
mysql резка
Нужно разрезать базу на несколько частей, подскажите какие нибудь проги или скрипты,
пробовал
<?php
set_time_limit(0);
$file_in = ''; #входной файл
$file_out_n = '0'; #выходной файл имя
$file_out_ras = 'gz'; #выходной файл расширение
$strok = 1000; #колличество строк в одном выходном файле
$count_out = 0; #счетчик выходных файлов начинать с этого числа
if(file_exists($file_in)) $content = file($file_in); else exit('Не найден входной файл '.$file_in);
$k=0;
$add = '';
for($i=0, $count=count($content); $i < $count; $i++){
if($i == $strok * ($k + 1) || $i==$count-1){
if($i==$count-1) $add=$add.$content[$i];
$fp = fopen($file_out_n.$k.'.'.$file_out_ras, 'w');
fputs($fp, $add);
fclose($fp);
$add='';
$k++;
}
$add=$add.$content[$i];
}
echo 'Работа завершена. Создано '.$k.' файлов';
?>
Файлы режуться, но после этого не открываются поврежденный архив....
|
|
|

05.06.2009, 11:48
|
|
Постоянный
Регистрация: 07.02.2006
Сообщений: 630
Провел на форуме: 12985021
Репутация:
676
|
|
Файлы режуться, но после этого не открываются поврежденный архив....
$file_out_ras = 'gz'; #выходной файл расширение
txt поставь, или файлы текст.редактором открывай 
|
|
|

05.06.2009, 11:49
|
|
Banned
Регистрация: 26.10.2008
Сообщений: 45
Провел на форуме: 193422
Репутация:
8
|
|
Для чего? мне их потом лить через dumper...
|
|
|

05.06.2009, 11:56
|
|
Постоянный
Регистрация: 07.02.2006
Сообщений: 630
Провел на форуме: 12985021
Репутация:
676
|
|
у тебя скрипт создает не архив .gz, а просто файл с расширением .gz. поэтому архиватор и пишет что архив поврежден..
|
|
|

05.06.2009, 12:05
|
|
Banned
Регистрация: 26.10.2008
Сообщений: 45
Провел на форуме: 193422
Репутация:
8
|
|
А как сделать что бы архив .gz? или может уже есть готовые скрипты для резки? подкинте ссылки 
|
|
|

05.06.2009, 12:39
|
|
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме: 3178262
Репутация:
389
|
|
phpmyadmin может загружать по частям файл, задавая смещение + поддерживает сжатие.
Последний раз редактировалось FireFenix; 05.06.2009 в 12:42..
|
|
|

05.06.2009, 12:56
|
|
Banned
Регистрация: 26.10.2008
Сообщений: 45
Провел на форуме: 193422
Репутация:
8
|
|
Мне не загружать части, а разбить одну БД на несколько частей
|
|
|

05.06.2009, 13:05
|
|
Постоянный
Регистрация: 07.02.2006
Сообщений: 630
Провел на форуме: 12985021
Репутация:
676
|
|
зачем тебе её разбивать? имхо разбивать только вручную, т.к скрипты разобьют дамп криво(запрос на несколько частей поделят), потом при импорте ошибки будут...
p.s: пока ты тут ответов ждешь уже можно было все вручную разбить, и запаковать в .gz как тебе надо...
p.s2: если у тебя с импортом больших файлов проблеммы посмотри, sypex dumper и это
|
|
|

05.06.2009, 13:10
|
|
Banned
Регистрация: 26.10.2008
Сообщений: 45
Провел на форуме: 193422
Репутация:
8
|
|
Сообщение от aka PSIH
зачем тебе её разбивать? имхо разбивать только вручную, т.к скрипты разобьют дамп криво(запрос на несколько частей поделят), потом при импорте ошибки будут...
p.s: пока ты тут ответов ждешь уже можно было все вручную разбить, и запаковать в .gz как тебе надо...
p.s2: если у тебя с импортом больших файлов проблеммы посмотри, sypex dumper и это
Пробовал ей, 140 мб и все дальше говорит не возможно соединится с удаленным URL
Если увеличить
$linespersession = 3000; // Lines to be executed per one import session
то выдает ошибку... где то на 70 мб и дальше не идет...
А вручную 70 тыс строк... это сложно...даже до конца страницы дойдти проблема минут 5 думает
Последний раз редактировалось C.C.C.P; 05.06.2009 в 13:12..
|
|
|

05.06.2009, 13:34
|
|
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме: 3178262
Репутация:
389
|
|
Сообщение от C.C.C.P
Файлы режуться, но после этого не открываются поврежденный архив....
Мой вариант твоего скрипта.
Для текстовых файлов.
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 строка
Последний раз редактировалось FireFenix; 05.06.2009 в 13:51..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|