ruby on rails - remove - Cargue un structure.sql en una base de datos de rieles a través de rake
rollback migration rails (6)
rake db:schema:load
cargará un archivo schema.rb
en una base de datos de rieles. ¿Hay alguna forma de cargar un archivo structure.sql
en la base de datos a través de rake o simplemente necesito hacer esto manualmente?
A veces desea cargar un archivo que no es el db/structure.sql
predeterminado.
Para los carriles 4.2 y anteriores, use
DB_STRUCTURE=some_file.sql rake db:structure:load
A partir de 5 carriles de uso.
SCHEMA=some_file.sql rake db:structure:load
Haga su archivo seeds.rb como:
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
Solo usa
rake db:setup
que utilizará schema.rb
o structure.sql
dependiendo de su configuración.
Una vez que cargues tu esquema, puedes probar:
rails dbconsole < structure.sql
O
rails db < structure.sql
Utilice rake db:structure:load
, que cargará db/structure.sql
.
[Actualizar]
Si desea cargar otro archivo, puede especificar su ruta a través de
-
SCHEMA
entornoSCHEMA
(Rails 5.0 o posterior) -
DB_STRUCTURE
entornoDB_STRUCTURE
(Rails 4.x)
Por ejemplo, ejecute
rake db:structure:load SCHEMA=db/another.sql
o
rake db:structure:load DB_STRUCTURE=db/another.sql
Utilice el propio mecanismo de carga SQL de la base de datos.
Para Postgres esto debería funcionar (al menos si la base de datos existe y no necesita una contraseña):
psql -d databaseName < db/structure.sql
En Heroku, donde rake db: setup no funciona, ya que no puedes crear una base de datos así, puedes hacer esto:
heroku pg:psql < db/structure.sql