1

我必须从服务器转储数据库,将 .sql 传输到不同的服务器,然后运行以下脚本以使用以下语法删除某些行:

DELETE wp_posts
FROM wp_posts
INNER JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID
WHERE (wp_postmeta.meta_key = 'InternalOnly' AND wp_postmeta.meta_value IS NOT NULL);

有没有办法可以在转储帖子之前过滤帖子?我不想在原始服务器上删除它们。

4

1 回答 1

0

在要转储的 MySQL 数据库中,运行以下查询:

CREATE TABLE wp_posts_copy LIKE wp_posts;
INSERT INTO wp_posts_copy
SELECT wp_posts.*
FROM wp_posts
INNER JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID
WHERE NOT(wp_postmeta.meta_key = 'InternalOnly' AND wp_postmeta.meta_value IS NOT NULL);

它将创建wp_posts_copy具有与 相同结构的表wp_posts,然后将要保留的行插入到这个新表中。

用于mysqldump导出数据时,请从转储中排除原始wp_posts表:

mysqldump -u username -p database --ignore-table=your_database.wp_posts > backup.sql

将备份导入新服务器后,不要忘记重命名表:

ALTER TABLE wp_posts_copy RENAME TO wp_posts;
于 2012-08-25T13:29:40.583 回答