如何将MySQL数据库A的表中的行添加到数据库B中的现有表中

时间:2014-07-22 15:34:57

标签: mysql database mysql-workbench

我正在使用MySQL。 我有一个"客户"数据库A中的表(位于服务器上)。

我想将它们添加到数据库B(位于localhost上)的customer表中,而不删除任何内容。

我对SQL命令或MySQL一般都很陌生,所以尽量做到最具说明性。 如果您需要更多关于某些内容的信息,我将编辑帖子并添加它。

(我有MySQL工作台)

感谢。

2 个答案:

答案 0 :(得分:1)

只需在localhost:

上使用它
mysqldump -u YOUR_DATABASE_USER -p YOUR_DATABASE_PASS -h YOUR_SERVER_IP databaseA customers > customer.sql
mysql -u YOUR_DATABASE_USER -p YOUR_DATABASE_PASS databaseB < customer.sql
PD:如果想要一些解释,请告诉我

答案 1 :(得分:1)

在服务器上(数据库A)

# Sets our database as default, so we wont have to write `database`.`table` in the consecutive queries.
# Replace *database* with your database name. 
USE *database*;

# Makes a copy of the customers table - named customers_export.
# This copy contains all the fields and rows from the original table (without indexes),
# and if you want, you can add a WHERE clause to filter out some data
CREATE TABLE `customers_export` SELECT * FROM `customers`;

由于您使用的是mysql_workbench,请选择相关数据库并执行数据导出(在管理部分), customers_export表。

在localhost(DB B)

假设数据库名称相同(否则您将需要更改转储文件中的数据库名称),请通过选择我们在上一步中导出的转储文件来执行数据导入/还原。 这将创建customer_export表。

# Set as default
USE *database*;

# If the data you want to import contains *NO* collisions (same primary or unique values in both tables), the structure and table name is the same
INSERT INTO `customers` SELECT * FROM `customers_export`;

我们完成了。
如果确实存在冲突,或者您想要更改列名,某些值等,则需要修改select语句或更新customers_export表以满足您的需求。

另外,备份第二台服务器上的customers表 - 以防插件出现问题。

最后 - 删除两台服务器上的customers_export表。