Skip to content

Load SQL views, materialized views, grants, etc. into database.

License

Notifications You must be signed in to change notification settings

PseudoCorps/database_loader

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Database Loader

Load SQL views, materialized views, grants, etc. into database.

For tables, use Rails migrations.

Currently it works only with oracle_enahanced adapter.

Installation

Include the gem in your Gemfile:

gem "database_loader"

In Rails 2.x you also need to add this to you Rakefile

require "database_loader/tasks"

Structure

rails_app/
  db/
    migrate/
    sql/
      local/
        views/
          report_v.sql
      ext/
        packages/
          sync_api.sql
        views/
          users_v.sql
        materialized_views/
        indexes/
        functions/
        scripts/
        grants/

Load generated SQL into database

rake db:sql:load:local
rake db:sql:load:ext

To load a single file into database provide file name without extension in NAME environment variable

rake db:sql:load:local:view NAME="xx_example_v"

Preview generated SQL

rake db:sql:dump:local
rake db:sql:dump:ext

Packaging a new release

In case you cannot directly access your external database, you can generate a package containing all your SQL files and send it to DBA.

rake db:sql:package:local NAME="v1"
rake db:sql:package:ext NAME="v1"

By default the package is going to be generated between your current commit and Master branch. If you would like to change this behavior, provide the starting point as COMMIT parameter.

rake db:sql:package:ext NAME="v1" COMMIT="master"

Configuration

config/initializers/database_loader.rb

# Types that contain SQL files.
DatabaseLoader.types = [ :views, :materialized_views, :indexes, :packages, :functions, :scripts, :grants ]

# Use :erb, :erubis or :liquid to render SQL files.
DatabaseLoader.template_engine = :erb

# Path to store generated tar packages.
DatabaseLoader.package_path = "/tmp"

# Path to SH template that will be used to generate deployement script (see examples/template.sh)
DatabaseLoader.template_path = Rails.root.join("db", "sql", "template.sh")

Setting up database connections

Convention is to create additional configurations for each environment and append the external schema name.

config/database.yml

development:
  username: local
  password: ...

development_ext:
  username: external
  password: ...

TODO

  • SQL dependency handling.

About

Load SQL views, materialized views, grants, etc. into database.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published