Как скопировать таблицу из одной базы данных mysql в другую базу данных mysql

Мне нужно скопировать таблицу из одной базы данных в другую. Это будет кроной. Какой из них лучший способ сделать это? PHP-скрипт или Shell Script. Проблема с PHP, обе базы данных имеют разные имена пользователей и пароли, поэтому я не могу этого сделать.

CREATE TABLE db1.table1 SELECT * FROM db2.table1 

Должен ли я просто подключить первую БД, получить все записи и вставить все в новую базу данных, используя цикл WHILE, или есть лучший способ?

Я предпочитаю сценарий оболочки для этого вместо PHP-скрипта.

благодаря

Я бы свалил его. Гораздо менее сложно, чем на PHP.

 mysqldump -u user1 -ppassword1 databasename > dump.sql mysql -u user2 -ppassword2 databasename < dump.sql 

Ссылка на MySQL: 4.5.4. mysqldump – программа резервного копирования базы данных

Если вам нужно скопировать таблицу на том же сервере, вы можете использовать этот код:

 USE db2; CREATE TABLE table2 LIKE db1.table1; INSERT INTO table2 SELECT * FROM db1.table1; 

Это копия + вставка отсюда: codingforums.com

Это не мое решение, но я считаю это полезным.

 mysqldump -u user1 -ppassword1 databasename TblName | mysql -u user2 -ppassword2 anotherDatabase 

Все это можно сделать в одной команде.

Phpmyadmin имеет встроенную функциональность для копирования таблиц из одной базы данных в другую. В противном случае вы можете пойти с Pekka или экспортировать таблицу, а затем импортировать таблицу.

 $L1 = mysql_connect('localhost', 'user1', 'pass1'); $DB1 = mysql_select_db('database1', $L1); $L2 = mysql_connect('localhost', 'user2', 'pass2'); $DB2 = mysql_select_db('database2', $L2); $re=mysql_query("SELECT * FROM table1",$L1); while($i=mysql_fetch_assoc($re)) { $u=array(); foreach($i as $k=>$v) if($k!=$keyfield) $u[]="$k='$v'"; mysql_query("INSERT INTO table2 (".implode(',',array_keys($i)).") VALUES ('".implode("','",$i)."') ON DUPLICATE KEY UPDATE ".implode(',',$u),$L2) or die(mysql_error()); } в $L1 = mysql_connect('localhost', 'user1', 'pass1'); $DB1 = mysql_select_db('database1', $L1); $L2 = mysql_connect('localhost', 'user2', 'pass2'); $DB2 = mysql_select_db('database2', $L2); $re=mysql_query("SELECT * FROM table1",$L1); while($i=mysql_fetch_assoc($re)) { $u=array(); foreach($i as $k=>$v) if($k!=$keyfield) $u[]="$k='$v'"; mysql_query("INSERT INTO table2 (".implode(',',array_keys($i)).") VALUES ('".implode("','",$i)."') ON DUPLICATE KEY UPDATE ".implode(',',$u),$L2) or die(mysql_error()); } 

user1, pass1, database1, table1 ссылается на начальную таблицу user2, pass2, database2, table2 reffers to copy table $ keyfield – это первичный ключ таблицы

Я отвечу на этот вопрос всем, кто ищет помощь.

Если у вас нет доступа к SSH, вы можете использовать PhpMyAdmin.

Просто:

  1. перейдите к таблице, которую хотите переместить
  2. Откройте вкладку «Операции»
  3. Используйте функцию MOVE или COPY для работы с базой данных

Если вы сталкиваетесь с проблемами привилегий, вы можете временно предоставить пользователям глобальные разрешения или добавить одного и того же пользователя в обе базы данных.

Один вкладыш с разными серверами

 mysqldump -h host1 -u user1 -ppassword1 databasename TblName | mysql -h host2 -u user2 -ppassword2 anotherDatabase 
 insert into dest.table select * from orginal.table; 
 CREATE TABLE db_target.cloned_table SELECT * FROM db_source.source_table; 

использовать <from database>

 create table <to database.new name> as (select * from <table to copy>);