Как скопировать таблицу из одной базы данных mysql в другую базу данных mysql
Мне нужно скопировать таблицу из одной базы данных в другую. Это будет кроной. Какой из них лучший способ сделать это? PHP script или Shell Script. Проблема с PHP, обе базы данных имеют разные имена пользователей и пароли, поэтому я не могу этого сделать.
CREATE TABLE db1.table1 SELECT * FROM db2.table1
Должен ли я просто подключить первую БД, получить все записи и вставить все в новую базу данных, используя цикл WHILE, или есть лучший способ?
Я предпочитаю оболочку script, чтобы сделать это вместо PHP скрипт.
Спасибо
Ответы
Ответ 1
Я бы сбросил его. Гораздо менее сложно, чем на PHP.
mysqldump -u user1 -ppassword1 databasename > dump.sql
mysql -u user2 -ppassword2 databasename < dump.sql
Ссылка на MySQL: 4.5.4. mysqldump - Программа резервного копирования базы данных
Ответ 2
Если вам нужно скопировать таблицу на тот же сервер, вы можете использовать этот код:
USE db2;
CREATE TABLE table2 LIKE db1.table1;
INSERT INTO table2
SELECT * FROM db1.table1;
Скопировать + вставить отсюда:
codingforums.com
Это не мое решение, но я считаю это полезным.
Ответ 3
mysqldump -u user1 -ppassword1 databasename TblName | mysql -u user2 -ppassword2 anotherDatabase
Все это можно сделать в одной команде.
Ответ 4
Phpmyadmin имеет встроенную функциональность для копирования таблиц из одной базы данных в другую. В противном случае вы можете пойти с Pekka или экспортировать таблицу, а затем импортировать таблицу.
Ответ 5
$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 ссылается на скопированную таблицу
$ keyfield является основным ключом таблицы
Ответ 6
Я отведу этот ответ для всех, кто ищет помощь.
Если у вас нет доступа к SSH, вы можете использовать PhpMyAdmin.
Просто:
- перейдите к таблице, которую вы хотите переместить.
- Перейдите на вкладку "Операции"
- Используйте функцию MOVE или COPY для работы с базой данных
Если вы сталкиваетесь с проблемами привилегий, вы можете временно предоставить пользователям глобальные разрешения или добавить одного и того же пользователя в обе базы данных.
Ответ 7
Один вкладыш с разными серверами
mysqldump -h host1 -u user1 -ppassword1 databasename TblName | mysql -h host2 -u user2 -ppassword2 anotherDatabase
Ответ 8
insert into dest.table select * from orginal.table;
Ответ 9
использовать <from database>
create table <to database.new name> as (select * from <table to copy>);
Ответ 10
CREATE TABLE db_target.cloned_table
SELECT *
FROM db_source.source_table;