夏柔最近需要实现sql语句导出wordpress的wp_post和wp_postmeta,于是乎写了这个语句,注意,夏柔针对的是我这边的主题sql结构,其他主题大同小异,可以尝试更换对应的字段名,
夏柔的需求:源sql文件有两个表,第一个表名:wp_posts,第二个表名:wp_postmeta,首先去搜索数据,如图一,根据ID的唯一值,取出对应的post_date(资源发布日期),post_content(资源介绍),post_title(资源标题),guid(溯源链接),然后携带ID的唯一值,去搜索wp_postmeta表的post_id,然后匹配对应的meta_key的down_url对应的值meta_value和meta_key的hidden_content的meta_value的值,注意wp_postmeta表里可能包含很多个post_id,如图二,只需要获取第一遍meta_key的down_url对应的值meta_value和meta_key的hidden_content的meta_value的值,然后去搜索下一个ID对应的post_id数据即可,然后创建新的sql文件新的表格式,将对应的数据取出来,插入进去即可,注意源sql文件和新sql文件都在根目录下,源sql文件命名为yuanma.sql,新的命名为new.sql,然后控制台打印实时进度
图一:
图二:
sql语句:
步骤一:
创建新的表:
CREATE TABLE new_table ( id INT PRIMARY KEY, post_date DATETIME, post_content TEXT, post_title TEXT, guid TEXT, down_url TEXT, hidden_content TEXT );
步骤二:
通过 JOIN 操作连接 wp_posts 和 wp_postmeta 表,从中提取需要的字段,并插入到新表中:
INSERT INTO new_table (id, post_date, post_content, post_title, guid, down_url, hidden_content) SELECT wp_posts.ID AS id, wp_posts.post_date, wp_posts.post_content, wp_posts.post_title, wp_posts.guid, ( SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.post_id = wp_posts.ID AND wp_postmeta.meta_key = 'down_url' LIMIT 1 ) AS down_url, ( SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.post_id = wp_posts.ID AND wp_postmeta.meta_key = 'hidden_content' LIMIT 1 ) AS hidden_content FROM wp_posts;
这样,夏柔就实现了转换;
imgSpider 采集中...