使用phpMyAdmin仅将新行导入现有表

时间:2017-06-15 22:17:34

标签: mysql wordpress phpmyadmin

我有一个WordPress网站。我制作了一个网站的临时副本,以便我们可以在那里进行更改。现在我们完成了更改,并希望将暂存站点的新文件和数据库上传到Live。问题是,我们只想从登台站点的.sql文件中导入新的/变异的行,并保留Live站点上的现有行。我们在Live上的wp_posts表包含许多现有订单,因此如果您知道我的意思,我们不希望覆盖整个表。

使用phpMyAdmin完成此操作的最佳方法是什么?我们也不介意使用mysql命令。请解释一下。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

mysqldump --no-create-info --insert-ignore --quick --where="id between from and to" <db> <table> > table.sql

注意:添加--set-gtid-purged=OFF:如果GTID已启用但又不想捕获。

--no-create-info:忽略要再次运行的架构 --insert-ignore:添加insert ignore语句而非insert,如果id已存在于prod中,则忽略该信息。
--where:指定要在prod上恢复的暂存范围

编辑:

--replace:如果您希望替换重复的行而不忽略,请将--insert-ignore替换为--replace

答案 1 :(得分:0)

在您通过sql导入的PHPMyAdmin文件中,将所有INSERT语句更改为REPLACE

REPLACE INTO `table_name` (`id`, `column_name`) VALUES (1, 'some_value')

The manual for REPLACE声明:

  

REPLACE的工作方式与INSERT完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行

即。旧行将替换为新行。

请注意,对于没有UNIQUE索引或PRIMARY KEY的表格,这不会起作用。但是,鉴于这是一个Wordpress网站,我认为其中几乎没有这样的表格。