ctf0/mysql-to-mongodb

此包已被放弃,不再维护。未建议替代包。

控制台命令,帮助将数据从mysql迁移到mongodb。

v1.0.2 2018-05-05 15:44 UTC

This package is auto-updated.

Last update: 2023-01-03 23:18:55 UTC


README

我制作这个工具是因为我开始学习mongodb,而且找不到任何合适的替代品。
工具按预期工作,甚至在使用mysql的实际应用程序上进行了测试,但我强烈建议您使用这个包时谨慎行事。

安装

  • composer require ctf0/mysql-to-mongodb

  • (Laravel < 5.5) 添加服务提供者

    'providers' => [
        ctf0\MysqlToMongoDb\MysqlToMongoDbServiceProvider::class,
    ]

用法

mongo:migrate            # clone mysql data to mongodb
mongo:migrate:pivot      # resolve pivot foreign ids (ManyToMany)
mongo:migrate:relation   # resolve foreign ids (OneToMany)
mongo:migrate:cleanup    # remove un-wanted field/collection from the db
mongo:migrate:maintain   # backup/restore mongo db (mongodump / mongorestore)

Wiki

注意

  • 如果您尚未安装mongodb,请检查http://wp.me/p4DYee-9Q

  • 确保您可以通过laravel连接到两个数据库,没有任何问题。

  • 该包假设您的mysql驱动连接是mysql,而默认驱动连接是mongodb

  • 该包不会重新创建mysql的表类型,这一点由mongodb决定,但是目前以下类型在迁移时会被转换:

    • tinyint(1) > bool

    • timestamp > date

    • multi(OneToMany) > index

    • unique > index/unique/sparse

      如果两个字段在两个不同的集合中具有相同的名称,将引发错误,因此作为替代方案,索引被保存为(CollectionName_field)

  • 您所有对id的调用都应该改为_id,除了在视图中,它将通过模型自动转换为。

  • moloquent使用string进行关系链接/引用,因此当将foreign_ids转换为ObjectId时,现在您将有一侧是string,另一侧是ObjectId,这将引起很多麻烦,因此保持为string

待办事项

  • 找到一种方法批量添加数据而不是逐个添加。
  • 将数据库备份上传到S3。
  • 制作一个简单的GUI以简化迁移。