您好,
现在有一个需求,之前的用户信息是存在一个单独的表userInfo 上,然后通过dependent字段连接_User,因为需要调用leancloud社交功能的API,进行关注和动态,在这一过程中需要前端显示的头像和名字,现在的做法导致需要每次都要再去请求userInfo表,所以决定将userInfo表中的相关字段直接移到_User表的相关用户中去。现在有一个问题,请问这样的数据迁移可以通过数据的导出导入解决么? 还是只能手动找到对应的用户,然后复制粘贴相关字段?

如果应用能接受停服维护的话,可以通过导入导出解决。

  1. 选择一个合适的停服维护时间(注意中午 12 点后无法导出数据),去控制台安全中心把「数据存储」的服务开关关闭,防止客户端修改数据造成数据不一致。
  2. 导出 userInfo_User 表,在本地写脚本批量转移 userInfo 的相应字段至 _User 表。
  3. 通过控制台的批量操作功能将 userInfo_User 表的记录全部清空(需要清空的原因是导入时不会覆盖已存在的 objectId)。
  4. 导入数据至 userInfo_User 表。
  5. 导入成功后去控制台安全中心把「数据存储」的服务开关打开,重新开始服务。

其实你们可以写脚本通过 REST API 或 SDK 完成数据的迁移,将 userInfo 表相应字段的数据复制到 _User 表(这个期间前端代码需要双写相应字段的更新,也就是同时写到 userInfo_User 表),操作完成后前端代码就可以切到新的查询逻辑,测试无误后可以去控制台直接把相应列删除。这样不需要停服。

以上两种方案都是假设客户端代码的版本都是完全由你们控制的(网页前端)。如果有移动端,因为要兼容老客户端,数据迁移过程就比较复杂。

谢谢您的回复。
跟进一下数据迁移的问题,您提到的方法都是通过调用JS API进行操作。请问数据迁移是否可以用云引擎实现?因为本质上是将一个表中的数据转移到另一个表中。如果可以的话,请问有相关的教程可以参考么?因为看到云引擎提到了这样的逻辑,但是没有一个比较具体的类似教程。

不一定是 JS API,其他语言的 SDK 的 API 也可以,直接调用 REST API 接口也可以。具体的代码可以在云引擎上跑,也可以在你们自己的机器上跑。