mysqldump过滤器?

时间:2012-08-24 23:27:35

标签: mysql mysqldump

我必须从服务器转储数据库,将.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);

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

1 个答案:

答案 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;