我必须从服务器转储数据库,将.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);
有没有办法在转发帖子之前过滤帖子?我不想在原始服务器上删除它们。
答案 0 :(得分: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
导出数据时,exclude the original wp_posts
table from the dump:
mysqldump -u username -p database --ignore-table=your_database.wp_posts > backup.sql
将备份导入新服务器后,请不要忘记重命名表:
ALTER TABLE wp_posts_copy RENAME TO wp_posts;