Как вывести данные из одной таблицы и вставить в другую - PullRequest
1 голос
/ 16 августа 2011

У меня есть две базы данных. Я хочу сохранить данные из одной таблицы в первой базе данных и вставить в другую таблицу с другим именем во второй базе данных.
Итак, у меня есть DB1 с таблицами tbl1 и tabl2 и DB2 с таблицами tbl3 и tbl4. Я знаю, что tabl1 и tabl3 имеют одинаковую структуру. Как скопировать данные из одного в другой с помощью команды mysqldump?
Я пытался сделать это, но это не сработало.

mysqldump --user root --password=password --no-create-info DB1 tbl1 > c:/dump.sql
mysql --user root --password=password DB2 tbl3 < c:/dump.sql

Ответы [ 3 ]

5 голосов
/ 16 августа 2011

Это не будет работать из-за разного имени таблицы

, если обе базы данных находятся на одном сервере с одним и тем же демоном, вы можете напрямую

insert into DB2.tbl3 select * from DB1.tbl1;

, если tbl1 несуществует в DB2, псевдокод
для этого:

# import as tbl1 from DB1 into tbl1 in DB2
mysqldump DB1 tbl1 | mysql DB2

# then rename tbl1 in DB2 to tbl3
mysql DB2 -N <<< "rename table tbl1 to tbl3"
2 голосов
/ 16 августа 2011

Я использую в командной строке оболочки Linux

mysqldump --user=username --password=xxxx dbname | mysql --host=remotehost.com --user=username --password=xxxx -C dname 

это передает его с локального хоста на удаленный хост, всю базу данных.

0 голосов
/ 17 сентября 2018

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

CREATE TABLE `new_table_name` LIKE `old_table_name`;
INSERT INTO `new_table_name` SELECT * FROM `old_table_name`;

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

 CREATE TABLE `db1.new_table_name` LIKE `db2.old_table_name`;
 INSERT INTO `db1.new_table_name` SELECT * FROM `db2.old_table_name`;

Это работает для меня как вывод одной таблицы, а при импорте выдается ошибка синтаксиса с MariaDB

...