如何转移 MySQL 的数据到 MongoDB

如何转移 MySQL 的数据到 MongoDB

我的系统是 Ubuntu

  1. 安装 ruby

    1
    apt install ruby
  2. 安装 mongoify

    1
    gem install mongoify
  3. 配置数据库

    1. 新建一个database.config

    2. 填写数据库配置

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      sql_connection do
      adapter "mysql2"
      host "localhost"
      username "root"
      password "passw0rd"
      database "my_database"
      end

      mongodb_connection do
      host "localhost"
      database "my_database"
      end
  4. 检查数据库配置

    1
    2
    3
    4
    5
    mongify check database.config
    # 如果提示 Specified 'mysql' for database adapter, but the gem is not loaded. Add `gem 'mysql'` to your Gemfile 则需要安装 mysql
    # gem install mysql2
    # 如果安装 mysql2 提示:mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h 则需要安装 libmysqlclient-dev
    apt install libmysqlclient-dev

    提示这个即可下一步

    1
    2
    SQL connection works
    NoSQL connection works
  5. 配置转移配置

    1. 先自动生成一个

      1
      mongify translation database.config > translation.rb
    2. 随后开始根据文档修改,或者如果没有需要动的结构直接迁移即可,这是文档地址)。

  6. 开始转移

    1
    mongify process database.config translation.rb

附录

  1. 转移过程中 清理/修改 数据

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    table "sgk" do
    # 修改列名
    column "name1", :string, :rename_to => 'username'
    # 保持原样,未作修改
    column "email", :string
    # 忽略这个列
    column "id", :key, :ignore => true

    # 保存之前操作
    before_save do |row|
    # 清理空格
    if row.username
    row.username = row.username.strip
    end
    end
    end