ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

mysql резка
  #1  
Старый 05.06.2009, 11:23
Аватар для C.C.C.P
C.C.C.P
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.' файлов';

?>


Файлы режуться, но после этого не открываются поврежденный архив....
 
Ответить с цитированием

  #2  
Старый 05.06.2009, 11:48
Аватар для aka PSIH
aka PSIH
Постоянный
Регистрация: 07.02.2006
Сообщений: 630
Провел на форуме:
12985021

Репутация: 676


По умолчанию

Цитата:
Файлы режуться, но после этого не открываются поврежденный архив....
$file_out_ras = 'gz'; #выходной файл расширение
txt поставь, или файлы текст.редактором открывай
 
Ответить с цитированием

  #3  
Старый 05.06.2009, 11:49
Аватар для C.C.C.P
C.C.C.P
Banned
Регистрация: 26.10.2008
Сообщений: 45
Провел на форуме:
193422

Репутация: 8
По умолчанию

Для чего? мне их потом лить через dumper...
 
Ответить с цитированием

  #4  
Старый 05.06.2009, 11:56
Аватар для aka PSIH
aka PSIH
Постоянный
Регистрация: 07.02.2006
Сообщений: 630
Провел на форуме:
12985021

Репутация: 676


По умолчанию

у тебя скрипт создает не архив .gz, а просто файл с расширением .gz. поэтому архиватор и пишет что архив поврежден..
 
Ответить с цитированием

  #5  
Старый 05.06.2009, 12:05
Аватар для C.C.C.P
C.C.C.P
Banned
Регистрация: 26.10.2008
Сообщений: 45
Провел на форуме:
193422

Репутация: 8
По умолчанию

А как сделать что бы архив .gz? или может уже есть готовые скрипты для резки? подкинте ссылки
 
Ответить с цитированием

  #6  
Старый 05.06.2009, 12:39
Аватар для FireFenix
FireFenix
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме:
3178262

Репутация: 389
По умолчанию

phpmyadmin может загружать по частям файл, задавая смещение + поддерживает сжатие.

Последний раз редактировалось FireFenix; 05.06.2009 в 12:42..
 
Ответить с цитированием

  #7  
Старый 05.06.2009, 12:56
Аватар для C.C.C.P
C.C.C.P
Banned
Регистрация: 26.10.2008
Сообщений: 45
Провел на форуме:
193422

Репутация: 8
По умолчанию

Мне не загружать части, а разбить одну БД на несколько частей
 
Ответить с цитированием

  #8  
Старый 05.06.2009, 13:05
Аватар для aka PSIH
aka PSIH
Постоянный
Регистрация: 07.02.2006
Сообщений: 630
Провел на форуме:
12985021

Репутация: 676


По умолчанию

зачем тебе её разбивать? имхо разбивать только вручную, т.к скрипты разобьют дамп криво(запрос на несколько частей поделят), потом при импорте ошибки будут...

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

  #9  
Старый 05.06.2009, 13:10
Аватар для C.C.C.P
C.C.C.P
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..
 
Ответить с цитированием

  #10  
Старый 05.06.2009, 13:34
Аватар для FireFenix
FireFenix
Постоянный
Регистрация: 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..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защита БД MySQL от SQL инъекций с помощью GreenSQL xcedz Администрирование 5 02.04.2009 21:46
SQL injection в MySql сервере версии 3,x bandera Чужие Статьи 3 04.06.2006 16:17
Общие Рекомендации Защиты (MySQL и SQL Web-интерфейс) k00p3r Чужие Статьи 0 13.06.2005 11:22
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18
SQL инъекция в сервере MySQL k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ