【问题标题】:Rails - dumping the database into a fileRails - 将数据库转储到文件中
【发布时间】:2016-10-18 06:10:53
【问题描述】:

我想做的是将数据库转储到自定义创建的 .rb 文件中。

我找到了一个可以让我这样做的seed_dump gem:

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb

然后我注意到我的数据库是我们的订单,所以我在 SO 上找到了包含 ID:

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb EXCLUDE=[]

在我想将新记录添加到我的数据库之前似乎很好。原来重置主键解决了这个问题:

def reset_pk
    ActiveRecord::Base.connection.tables.each do |t|
      ActiveRecord::Base.connection.reset_pk_sequence!(t)
    end
    redirect_to root_url
end

我现在要做的是简化转储过程,至于现在,每次我转储数据库时,记录都是“乱序”的,我将在下面解释。

假设我有两个模型:LabOffer。实验室可以有很多优惠。因此,为了创建一个Offer 对象,我首先必须创建一个Lab 对象。但是当我转储架构时,我的文件如下所示:

Offer.create...
Offer.create...
Offer.create

Lab.create...
Lab.create...
Lab.create...

如果我尝试播种,它不会这样做,因为优惠是在实验室之前创建的,应该是另一种方式。

我的问题是,有没有办法在转储数据库的同时真正保持关系,以便首先创建实验室?

编辑

我设法做到了这样的事情:

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb EXCLUDE=[] MODELS="Lab, Offer"

这个保持我想要的顺序,但我想知道是否有一种简单的方法(如果有 15、20 个模型而不是只有 2 个)。

【问题讨论】:

  • 你为什么需要一个 Ruby 文件呢?为什么不使用数据库的备份/转储工具?
  • 我对 rails 和 heroku 的东西比较陌生,我想把这个数据库放在一个文件中,以防我搞砸了。我确实使用heroku pg:pull DATABASE_URL databasename --app my_app_name 从heroku 获取数据库,但正如我所说,只需再采取一步以确保我不会删除所有记录。
  • 所以您使用pg:pull 将数据库复制到本地PostgreSQL?为什么不用pg_dump转储本地数据库?
  • @Ancinek 您已经将数据库“放在一个文件中”,采用您将要获取的最佳和最有用的格式。将其移入 Ruby 是一个使您的数据较少可靠和可用的毫无意义的练习。没有理由这样做。
  • 谢谢你的回答。我想我会停止这样做,因为正如你所说,没有理由这样做。我有一个heroku备份以防万一。无论如何感谢 pg_dump 选项。不知道!

标签: ruby-on-rails ruby


【解决方案1】:

您可以尝试按您希望的顺序一次转储/恢复一张桌子。

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 2015-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多