rake db:schema:load
はschema.rb
ファイルをRailsデータベースに挿入します。structure.sql
rakeを介してデータベースにファイルするか、これを手動で行う必要がありますか?
つかいます 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
使うだけ
rake db:setup
設定に応じてschema.rb
またはstructure.sql
のいずれかを使用します。
データベース独自のSQLロードメカニズムを使用します。
Postgresの場合、これは機能するはずです(少なくともデータベースが存在し、パスワードが必要ない場合):
psql -d databaseName < db/structure.sql
次のようにデータベースを作成できないため、rake db:setupが機能しないHerokuでは、次の操作を実行できます。
heroku pg:psql < db/structure.sql
デフォルトではないファイルをロードしたい場合があります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
スキーマをロードしたら、次を試すことができます。
Rails dbconsole < structure.sql
OR
Rails db < structure.sql
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
ソース 。