Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   PHP&MySQL (http://forum.mynuke.ru/forumdisplay.php?f=21)
-   -   Перенос таблиц MySQL (http://forum.mynuke.ru/showthread.php?t=2532)

MO-HAX 20.01.2007 23:33

Перенос таблиц MySQL
 
господа помгите плз. нуже пример скрипта, чтобы переносил таблица из отдной базы в другую (идентичную) стоит нюка 6.8 хочу 8.0. , пропатчить не могу до 8.0 глючит, вот и хочу базу перенести

Astrix 21.01.2007 17:51

щас попробую что-нить наваять. результат выложу

Astrix 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 ;$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
Их там не должно быть - учтите пожалуйста это!


Часовой пояс GMT +4, время: 07:07.

Copyright © 2005 by Soniks