Трабл с дампом БД

uncle17

есть два дампа - PG и MySQL
при заливке MySQL выдает 1064 ошибку где-то на 10 процентах, PG сам не смотрел, но админы говорят, что тоже не льется. С чем может быть связано вообще и есть ли шанс восстановить?
а то жалко - MySQL на 5 гигов и PG на гиг...

sergey_m

Ты уже выяснил, что такое 1064 ошибка или надеешься, что форумчане сделают это за тебя?

uncle17

1064 MYSQL error:You have an error in your SQL syntax
проявляется на 650 тысяч какой-то-там строке, редакторов, которые бы смогли выдать мне эту строку из 5-гигового файла, у меня нет

uncle17

в общем-то, интересует, почему мог получиться битый дамп... выглядит на первый взгляд нормально, но 5 гигов, конечно, просмотреть невозможно

sergey_m

проявляется на 650 тысяч какой-то-там строке, редакторов, которые бы смогли выдать мне эту строку из 5-гигового файла, у меня нет
В UNIX есть утилиты, позволяющие получить данную строку. Если ты не можешь их найти, то в конце концов ты сам можешь написать простую программку для этого.
P.S. Почему блюститель русского языка все предложения начинает с маленькой буквы?

sergey_m

> но 5 гигов, конечно, просмотреть невозможно
Это заблуждение. В Programming был славный тред, где Darkgray нам доказывал преимущества Excel перед простыми утилитами UNIX. И там я и приводили примеры того, где Excel обосрётся, а простые конвейеры справятся. Твой случай - это еще один пример.

sergey_m

В UNIX есть утилиты, позволяющие получить данную строку. Если ты не можешь их найти, то в конце концов ты сам можешь написать простую программку для этого.
Сегодня мне почему-то хочется тебе помочь. Вот два примера (XXX - номер строки):
awk '{ if (NR == XXX) print $0 }' < mysql.dump
nl -n ln XXX | egrep '^26\ '
Выбирай какой больше нравится.

evgen5555

Excel обосрётся, а простые конвейеры справятся. Твой случай
Такие случаи наиболее характерны для UNIX-like систем и программ.

Marinavo_0507

tail +XXX | head -1

sergey_m

> tail +XXX | head -1
tailу придётся считать весь файл, это отстой. Возможно head XXX | tail -1 будет лучше.

uncle17

спасибо, конечно, но весь трабл в том, что я под виндой
Локально пытался на пхп выдернуть при помощи

<?php
$handle = fopen ("database.sql", "r");
$i=0;
while ($i<650587) {
$buffer = fgets($handle, 4096);
$i++;
}
echo $buffer;
fclose ($handle);
?>

но не то... при разных значениях "4096" выдает разные строки, хотя везде этот пример приведен именно как построчное чтение строк из файла

Sebasten

давай мыло, пришлю тебе tail и head, вещь

Marinavo_0507

> tailу придётся считать весь файл, это отстой
да ну, его прибьёт SIGPIPE

sergey_m

> > tailу придётся считать весь файл, это отстой
> да ну, его прибьёт SIGPIPE
Каким образом tail узнаёт что данная строка является n-нной от конца файла?

uncle17

rodiontsev.ru
только вот что с ним делать:)

Marinavo_0507

не от конца, а от начала
но похоже, это фича GNU tail

alexkravchuk

компилятор C есть?

#include <stdio.h>
///////////////
// Правильная строка запроса - command_name file_name line_number
int main(int n_sw,char *msw[])
{
int a,b,c,nn;
FILE *ff;
if( n_sw<3 || sscanf(msw[2],"%d",&nn)==0 )
{
printf("Error command line\r\n");
return -1;
}
ff = fopen(msw[1],"rb");
if(!ff)
{
printf("Can't open file %s for reading!\r\n",msw[1]);
return -2;
}
for(c=fgetc(ffa=0; c!=-1; c=fgetc(ff
{
if(a==(nn-1
if(c!='\n')
printf("%c"char) c);
else
break;
if(c=='\n')
a++;
}
if(a<(nn-1
printf("Sorry, line not found!\r\n");
fclose(ff);
return 0;
}
Конечно, лучше прямее написать, но лень...

Блин, ну и глючит меня - всё нормально.
Надо идти в л&c, думать сегодня противопоказано

uncle17

не... нету
хотя щас поищу...

Sebasten

Ну как что, запускаешь и смотришь строку с нужным тебе номером большого файла, можешь даже несколько строк, можешь даже с номерами, ищешь ошибку. Наиболее общий вариант использования мне видится таким
$cat -n filename | head -LastLineNumber | tail -LinesNumber
P.S. Могу ещё прислать компилятор

maggi14

есть шикарные грепы под виндой

alexkravchuk

Интересно, сколько раз должен человек должен повторить, что сидит под виндой, чтобы ему перестали такие варианты предлагать?

Sebasten

Но если вариант очень хороший?

sergey_m

Интересно, сколько раз должен человек должен повторить, что сидит под виндой, чтобы ему перестали такие варианты предлагать?
Сервер MySQL у него тоже под виндой?

uncle17

локально - да, в чем проблема?

alexkravchuk

MySQL вполне сносно живёт на 9x, PostgreSQL - на NT/XP...
Может и не лучший вариант, но тем не менее...

Sebasten

Каким образом tail узнаёт что данная строка является n-нной от конца файла?
Например, запустит "wc -l "

uncle17

кстати, то, что ты прислал, не пашет, ибо не найден cygintl-3.dll

uncle17

эх-х-х... апнем.
Вопрос: в mysql название базы может содержать дефис?
Затыкается на

CREATE DATABASE /*!32312 IF NOT EXISTS*/ mnogosearch-db;

Marinavo_0507

в обратных кавычках напиши

uncle17

о как... а я-то думаю - зачем опция в экспорте про кавычки

IvladV71

жжошнах!
Оставить комментарий
Имя или ник:
Комментарий: