2016-10-28 20 views
0

複数のAlterテーブルステートメントやビュー定義、またはplsqlの関数定義で構成された複数の.sqlファイルがあります。 PostgreSQL DBに完全なsqlファイルを適用したいと思います。それは私がPG.connect.executeと私は、ファイルをロードし、個別に各ステートメントを実行する必要があり、そのようにやって試してみましたRubyでSQLファイルを実行する方法

psql -h "HostName" -p "Port" -U "userName" -d "pwd" -f "Sql file location" 

のような類似したものでなければなりません。 Rubyにsqlファイル全体を実行する方法はありますか?

答えて

2

PostgreSQLデータベースと通信するための2つのAPIがあり、どちらも がgemとして利用可能です。 pg gemは、純粋なRubyバインディングをPostgresに提供します。

Exemple: このコードは、あなたが のポート5432ローカルマシン上でTCP/IPを介してデータベースにアクセスしている前提としています。より多くの情報check this

については

gem 'pg' 
require 'pg' 
def with_db 
    db = PG.connect(
    dbname: 'dbname', 
    user: 'user', 
    password: 'password' 
    ) 
    begin 
     yield db 
    ensure 
     db.close 
    end 
end 

sql = File.open('path/to/your_sql.sql', 'rb') { |file| file.read } 
with_db do |db| 
    begin 
    db.exec(sql) 
    rescue PG::Error 
    ##### 
    end 
end 

関連する問題