数据导入是否替换MySQL Workbench中的现有数据?

时间:2016-02-01 16:50:58

标签: database mysql-workbench

我在MySQL Workbench的开发环境中使用数据库。我已准备就绪,需要将其移至prod数据库。我已将其导出到sql文件,但我不确定我是否以正确的方式接近导入。

如果我使用"数据导入/恢复"功能,选择我的SQL文件和导入,它会替换数据库中的现有数据(我想要发生什么),还是会为每个表添加新记录以获取新数据?

每个数据库中的架构都是相同的。我只需要使用dev中的新数据替换prod数据库中的旧数据。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

这取决于导出文件的外观。只需在文本编辑器中打开它,然后读取导出文件中的语句。

默认情况下,它应包含如下语句:

CREATE TABLE IF NOT EXISTS `customer` (
  `CUSTOMER_ID` int(11) NOT NULL,
  `CUSTOMER_NM` varchar(100) DEFAULT ''
) EN

紧接着该表的数据:

INSERT INTO `customer` (`CUSTOMER_ID`, `CUSTOMER_NM`) VALUES
(0, 'Dummy Customer');
(1, 'Dummy Two');

由于您的表已经存在于您的PROD环境中,因此它不会删除,创建或替换它们(请注意CREATE TABLE IF NOT EXISTS - 语句)。 INSERT - Stamement将被执行(没有条件说它不应该)。

因此,在导入文件后,您的数据库中将包含先前的PROD数据+您的DEV环境中导入的DEV数据。

另一方面,它可能包含如下声明:

DROP TABLE IF EXISTS `customer`

紧随其后CREATE - 声明后跟一些INSERT - 陈述。在这种情况下,您的整个PROD - 数据库将被DEV-Database替换为您想要的。

答案 1 :(得分:0)

您可以使用特定于MySQL的replace语句来实现此目标。 check out this link