【问题标题】:Migrating Wordpress user management to custom CMS将 Wordpress 用户管理迁移到自定义 CMS
【发布时间】:2019-01-25 04:27:40
【问题描述】:

我有一个将 wordpress 网站迁移到自定义 CMS 的请求。

问题是这个wordpress网站有超过30 000个注册用户,并且user_meta表非常不一致,因为在过去5年他们使用不同的插件进行用户管理,所以有些用户有10条记录在 user_meta 表中,有的有 50 条记录,有的有多达 150 条记录(它们在这 5 年中存储了不同的用户信息)。

我必须将关于用户的所有相关数据(例如:用户名、first_name、last_name、date_of_birth...)保存在非键-属性-值数据库表中>。因此,我将为用户提供常规表(具有特定列,如用户名、名字、姓氏……),并且我必须将 特定数据记录从 user_meta 迁移到一个或多个相关新 CMS 的表格。 user_meta 表目前有几百万条记录(相关和不相关)。

如何从 user_meta 表中提取每个用户所需的所有数据(例如:用户名、名字、姓氏、出生日期),但我需要的不是键值格式,而是可以导入列的常规格式- 基于表(所以我可以很容易地导入它们)?

谢谢

如果需要,我会在 cmets 中为这个问题添加更多细节

【问题讨论】:

  • 导出数据库再导入不行吗?
  • 问题是 user_meta 有 meta_key 和 meta_value 列,我可以将其导出,但在该自定义 CMS 的新数据库中,我没有 meta_key 和 meta_value,但 wordpress 表中的键应该起作用作为新数据库表中的列名。因此,如果 meta_key 是 first_name,那么它就是新数据库表的列。关键是我需要删除所有不必要的数据(anmari bellow 举了一个例子)。感谢您的回复

标签: php database wordpress key-value user-management


【解决方案1】:

确定您需要的元键。它们中的大多数你都不需要,因为它们与“管理员颜色”等 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 

如果您需要任何非唯一的元值,它就会开始变得棘手。

【讨论】:

  • 好的,这种带有大型 sql 查询的方法可能会很好用,因为我可以让它工作几个小时,时间和磁盘空间/内存都不是问题。我将根据您在本地计算机上的查询尝试一些事情。如果没有更好的答案,并且该查询按预期工作,我会将您的答案标记为正确答案。非常感谢。注意:我试图支持您的回答,但我的声誉不够好 :) 非常感谢您的回答
猜你喜欢
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 2015-11-13
  • 2013-06-08
  • 2013-08-24
  • 2019-03-28
  • 1970-01-01
  • 2022-10-06
相关资源
最近更新 更多