我有一个WordPress网站。我制作了一个网站的临时副本,以便我们可以在那里进行更改。现在我们完成了更改,并希望将暂存站点的新文件和数据库上传到Live。问题是,我们只想从登台站点的.sql文件中导入新的/变异的行,并保留Live站点上的现有行。我们在Live上的wp_posts表包含许多现有订单,因此如果您知道我的意思,我们不希望覆盖整个表。
使用phpMyAdmin完成此操作的最佳方法是什么?我们也不介意使用mysql命令。请解释一下。
答案 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')
REPLACE的工作方式与INSERT完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行
即。旧行将替换为新行。
请注意,对于没有UNIQUE
索引或PRIMARY KEY
的表格,这不会起作用。但是,鉴于这是一个Wordpress网站,我认为其中几乎没有这样的表格。