こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

シェルでのファイル内に記載されたSQLファイル実行

Webを検索しても方法が出てこなかったため、質問させていただきます。

ファイル内に記載されたSQLファイルをPostgresで実行したいと思っております。
OracleのSqlPlusでは以下のファイルを次のように実行できました。

【コンソール】
SQL> @@C:/path/hogehoge.sql

【ファイルの中身】
@@C:/path/xxx.sql
@@C:/path/yyy.sql
@@C:/path/zzz.sql




今回、Postgresでもファイル内に記載されたSQLファイルを呼び出して実行するために、コンソールで以下のコマンドを実行したのですが、エラーとなってしまいます。

psql -e DB名 ユーザ名 < C:/path/hogehoge.sql

他のオプション指定が必要なのか、またはファイル内のSQLファイルのパスの指定方法が間違っているのか…現状では解決方法が見つかっておりません。


どなたか解決方法を知っている方がいらっしゃれば教えていただけませんでしょうか?

投稿日時 - 2012-05-08 17:16:03

QNo.7464857

困ってます

質問者が選んだベストアンサー

 @@C:/path/xxx.sqlでCドライブのpathというパスにあるxxx.sqlというSQLファイルを実行するのはOracle Databaseが提供しているSQL*PLUSの機能で、当然ながら同等の機能がpsqlコマンドに実装されているかどうかは分からない、という点はまず最初に理解していただきたい。

 ところで、psqlには\iという内部コマンドがあり、これを使えば同等の事はできると思われる。以下、Linux(今回動作検証に使ったのはOracle Linux 5.8+PostgreSQL 8.1.23)での例。

【コンソール】
postgres=# \i '/path/hogehoge.sql'

【ファイルの中身】
\i '/path/xxx.sql'
\i '/path/yyy.sql'
\i '/path/zzz.sql'


投稿日時 - 2012-05-09 02:51:13

お礼

anmochiさんの方法で無事解決することができました!

@@によるSqlスクリプト実行はSqlPlusの機能である、というのはWebを検索している段階で理解はしておりました。
質問の項では言及を省かせていただいたのですが、ファイルの内容の'@@'の部分を、Webを参考に試行錯誤しながら変換を行いました。それでも自分の力では解決することができなかったために質問を書かせていただいた次第です。

本当に助かりました!回答をしていただき、本当にありがとうございました!!

投稿日時 - 2012-05-09 11:27:56

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問