web-dev-qa-db-ja.com

structure.sqlをRails rake経由でデータベースにロードします

rake db:schema:loadschema.rbファイルをRailsデータベースに挿入します。structure.sql rakeを介してデータベースにファイルするか、これを手動で行う必要がありますか?

47
locoboy

つかいます rake db:structure:load、これはdb/structure.sql

[更新]

別のファイルをロードする場合は、そのパスを指定できます

  • SCHEMA環境変数(Rails 5.0以降)
  • DB_STRUCTURE環境変数(Rails 4.x)

たとえば、実行

rake db:structure:load SCHEMA=db/another.sql

または

rake db:structure:load DB_STRUCTURE=db/another.sql
80
Tsutomu

使うだけ

rake db:setup

設定に応じてschema.rbまたはstructure.sqlのいずれかを使用します。

27
nathanvda

データベース独自のSQLロードメカニズムを使用します。

Postgresの場合、これは機能するはずです(少なくともデータベースが存在し、パスワードが必要ない場合):

psql -d databaseName < db/structure.sql

次のようにデータベースを作成できないため、rake db:setupが機能しないHerokuでは、次の操作を実行できます。

heroku pg:psql < db/structure.sql
6
Joseph Lord

デフォルトではないファイルをロードしたい場合がありますdb/structure.sql

Rails 4.2以前の場合は、

DB_STRUCTURE=some_file.sql rake db:structure:load

Rails 5 use

SCHEMA=some_file.sql rake db:structure:load

2
jpayne

スキーマをロードしたら、次を試すことができます。

Rails dbconsole < structure.sql

OR

Rails db < structure.sql
2
JstRoRR

Seeds.rbファイルを次のようにします。

unless Rails.env.production?
  connection = ActiveRecord::Base.connection

  sql = File.read('db/structure.sql')
  statements = sql.split(/;$/)
  statements.pop  # the last empty statement

  ActiveRecord::Base.transaction do
    statements.each do |statement|
      connection.execute(statement)
    end
  end
end

ソース