|
21.01.2007, 19:18
Час работы и вот что у меня получилось (просьба сразу камнями не закидывать):
PHP код:
<?
$prefix = "nuke_";
//Список таблиц в базе
$tables_list = "authors,autonews,banned_ip,banner,clients,plans,ba nner_positions,banner_terms,bbauth_access,bbbanlis t,"
."bbcategories,bbconfig,bbdisallow,bbforum_prune,bbf orums,bbgroups,bbposts,bbposts_text,bbprivmsgs,"
."bbprivmsgs_text,bbranks,bbsearch_results,bbsearch_ wordlist,bbsearch_wordmatch,bbsessions,bbsessions_ keys,"
."bbsmilies,bbthemes,bbthemes_name,bbtopics,bbtopics _watch,bbuser_group,bbvote_desc,bbvote_results,"
."bbvote_voters,bbwords,blocks,cities,comments,comme nts_moderated,config,confirm,counter,"
."downloads_categories,downloads_downloads,downloads _editorials,downloads_modrequest,downloads_newdown load,"
."downloads_votedata,encyclopedia,encyclopedia_text, faqanswer,faqcategories,groups,groups_points,headl ines,journal,"
."journal_comments,journal_stats,links_categories,li nks_editorials,links_links,links_modrequest,links_ newlink,"
."links_votedata,main,message,modules,optimize_gain, pages,pages_categories,,poll_check,poll_data,poll_ desc,pollcomments,"
."pollcomments_moderated,public_messages,queue,refer er,related,reviews,reviews_add,reviews_comments,"
."reviews_comments_moderated,reviews_main,session,st ats_date,stats_hour,stats_month,stats_year,stories ,stories_cat,"
."subscriptions,topics,users,users_temp";
$tables = explode( ",", $tables_list );
$user = "username";
$pass = "password";
$host = "localhost";
$db1 = "db1_name"; //Исходная база данных
$db2 = "db2_name"; //Конечная база данных
@mysql_connect($host, $user, $pass) or die ('Не могу сконнектиться с сервером');
@mysql_select_db($db1) or die ('Не могу выбрать базу данных 1');
for ($i=0; $i<sizeof($tables); $i++) {
$sql = "SELECT * FROM ". $prefix . $tables[$i] . "";
if ($result=mysql_query($sql)) {
while ($rows[] = mysql_fetch_row($result)) {}
@mysql_select_db($db2) or die ('Не могу выбрать базу данных 2');
//Удаляем старые записи из таблицы
$sql = "DELETE FROM ". $prefix . $tables[$i] . "";
@mysql_query($sql);
for ($j = 0 ;$j<sizeof($rows)-1; $j++) {
$row = $rows[$j];
$values = '';
while (list($key, $val) = each ($row)) {
$values .=" '" .addslashes($val). "'";
$values .= ($key < sizeof($row)-1) ? "," : "";
}
$sql = "INSERT INTO ". $prefix . $tables[$i] . " VALUES ($values)";
echo ($sql . " <br>" . sizeof($row) . "<br>");
if (!$result=mysql_query($sql)) {
die ('ошибка записи в конечную базу данных');
}
}
}
unset ($rows);
@mysql_select_db($db1) or die ('Не могу выбрать базу данных 1');
}
?>
Просьба при передаче третьим лицам данного скрипта указывать авторство. Мой E-mail: hack6666@mail.ru
Обязательно сверьте содержимое переменной $tables_list со списком таблиц в вашей БД!
При любом несовпадении структуры, имени таблицы или названий полей работа скрипта может быть некорректной.
Поэтому опробуйте его на резервной копии вашей базы данных на локальной машине и ТОЛЬКО потом на сервере!
Удачи!
P. S.
Если у кого есть предложения по усовершенствованию даного скрипта, с радостью приму все к сведению!
При загрузке скрипта почему-то появились разрывы в строках переменной $tables_list
Их там не должно быть - учтите пожалуйста это!
|
|