В моем примере база была InnoDB, поэтому пример привожу с ее фишками:
//читаем файл с дампом $str = file_get_contents("dump.sql"); //если есть CREATE TABLE, тогда создаем таблицы if( preg_match_all("/\-\- Table.*?\s\-\-\s(.*?)\-\-/s", $str, $p) ) { $er = false; foreach( $p[1] as $v ) { if( trim($v) != '' ) { if(!mysql_query(trim($v), $link)) { echo '<strong style="color: red;">Ошибка запроса:'.$v.'</strong>'; $er = true; } } } } //если есть инсерты, инсертим ;) if(preg_match_all("/\-\- Dumping data.*?\s\-\-\s(.*?)\-\-/s", $str, $p)) <span style="font-size: 13px;">{</span> foreach( $p[1] as $v ) { if( trim($v) != '' ) { if(!mysql_query(trim($v), $link)) { echo '<strong style="color: red;">Ошибка запроса:'.$v.'</strong>'; $er = true; } } } } //создаем связи между таблицами if(preg_match_all("/\-\- Constraints.*?\s\-\-\s(.*?)\-\-/s", $str, $p)) <span style="font-size: 13px;">{</span> foreach( $p[1] as $v ) { if( trim($v) != '' ) { if(!mysql_query(trim($v), $link)) { echo '<strong style="color: red;">Ошибка запроса:'.$v.'</strong>'; $er = true; } } } } if( $er !== false ) { echo '<strong style="color: green;">'.gettext("Дамп базы данных установлен.").'</strong>'; } else { echo '<strong style="color: green;">'.gettext("Дамп базы данных установлен с ошибками.").'</strong>'; }