我有一个要求将wordpress网站迁移到自定义CMS。
问题在于此wordpress网站拥有超过 30000个注册用户,并且user_meta表非常不一致,因为在过去5年中,他们使用不同的插件进行用户管理,因此一些用户有10条记录在user_meta表中,有些记录有50条记录,有些记录多达150条记录(它们在这5年中存储了有关用户的不同信息)。
我必须将与用户有关的所有相关数据(例如:用户名,名字,姓氏,出生日期,...)保存在非键属性值数据库表。因此,我将为用户准备常规表(具有用户名,first_name,last_name等特定列),并且必须将特定数据记录从user_meta迁移到一个或多个相关新CMS的表格。 user_meta表当前具有数百万条记录(相关和不相关)。
如何从user_meta表中提取每个用户的所有必需数据(例如:用户名,first_name,last_name,date_of_birth),但我不需要它们的键值格式,而是常规格式,可以将其导入列基于表(以便我可以轻松导入它们)?
谢谢
如果需要,我会在注释中添加更多详细信息
答案 0 :(得分:0)
工作所需的元键。其中大多数您不需要,因为它们与诸如“管理员颜色”之类的wordpress设置有关。
然后您可以执行类似https://wordpress.stackexchange.com/questions/231003/how-to-get-list-of-all-users-and-their-metadata
的操作或非常大的SQL查询(可能带有限制和偏移量批处理)
SELECT T.ID, M1.meta_value AS first_name, M2.meta_value AS last_name, M4.meta_value AS event
FROM wp_users AS T
LEFT OUTER JOIN wp_usermeta AS M1 ON (T.ID=M1.user_id AND M1.meta_key = 'first_name')
LEFT OUTER JOIN wp_usermeta AS M2 ON (T.ID=M2.user_id AND M2.meta_key = 'last_name')
LEFT OUTER JOIN wp_usermeta AS M4 ON (T.ID=M4.user_id AND M4.meta_key = 'event')
ORDER BY T.ID ASC
如果您需要任何非唯一元值,它将变得越来越棘手。