Load a structure.sql into a rails database via rake

rake db:schema:load will load a schema.rb file into a rails database. Is there a way to load a structure.sql file into the database through rake or do I just need to do this manually?


Use rake db:structure:load, which will load db/structure.sql.

[Update]

If you want to load another file, you can specify its path via

  • SCHEMA environment variable (Rails 5.0 or later)
  • DB_STRUCTURE environment variable (Rails 4.x)

For example, run

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

or

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

Just use

rake db:setup

which will use either schema.rb or structure.sql depending on your configuration.


Use the database's own SQL load mechanism.

For Postgres this should work (at least if the database exists and you don't need a password):

psql -d databaseName < db/structure.sql

On Heroku where rake db:setup doesn't work as you can't create a database like that you can do this:

heroku pg:psql < db/structure.sql

Once you load your schema, you can try:

rails dbconsole < structure.sql

OR

rails db < structure.sql

Sometimes you want to load a file that is not the default db/structure.sql.

For rails 4.2 and earlier, use

DB_STRUCTURE=some_file.sql rake db:structure:load

As of rails 5 use

SCHEMA=some_file.sql rake db:structure:load