質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

940閲覧

perlからpostgresqlのsql-fileを実行したい。my $outr = $dbh->do("\i /temp/joblist/xxxxxxx.sql") ;としても、\iがエラーとなる

HISASHIYOSHITAK

総合スコア1

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2021/05/14 05:02

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

DBD::Pg::db do failed: ERROR: "i"

エラーメッセージ

該当のソースコード

perl,
posetgresql
ソースコード
my $outr = $dbh->do("\i /temp/joblist/xxxxxxx.sql")

my $outr = $dbh->do("\i /temp/joblist/xxxxxxx.sql")

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「\i ファイル名」ってのは、psqlのメタコマンドなので、SQLではありません。
perlからpsqlコマンドを呼び出してファイルを渡して実行する(system PROGRAM LIST)か、
perl上でsqlファイルを読み込んでDBDにわたすかしましょう。

投稿2021/05/14 05:32

編集2021/05/14 07:22
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HISASHIYOSHITAK

2021/05/14 06:37

回答ありがとうございます。 >perlからpsqlコマンドを呼び出してファイルを渡して実行するか 下記を試してますが、エラーになります。ご指導いただけたら、うれしいです。 my $outr = $dbh->do("psql -f /temp/joblist/ghrorghis2.sql") ;
HISASHIYOSHITAK

2021/05/14 06:49

connectは下記を実施してます。 my $dbh = DBI->connect("dbi:Pg:dbname=$DB_NAME;host=$DB_HOST;port=$DB_PORT","$DB_USER","$DB_PASS")
退会済みユーザー

退会済みユーザー

2021/05/14 07:23 編集

my $outr = $dbh->do() で与えられるのは、純粋にSQL文だけだと思います。 perlでシェル上のコマンドを実行するのは、例えば exec とか system とかでしょうか。 (ここ何年も実務でPerlを使ってないので、perldocを観ながら回答してます。)
HISASHIYOSHITAK

2021/05/14 07:59

ご回答ありがとうございます。 基本的にpsqlのコマンドラインから¥iで実行できるfileです。複数のteableを読み込んで、複照会などを駆使して、copyでcsvに書き出してます。純粋にsqlですが、1fileで4-50行あって、20file程度を処理予定です。今のところ、systemからpsql -f xxxx.sqlになりそうです。
退会済みユーザー

退会済みユーザー

2021/05/14 08:27

それがいいかも。
HISASHIYOSHITAK

2021/05/14 09:44

ありがとうございます。 いいところまできてます。win環境でpasswordを聞かれるので、そこをクリアーできれば、作成したsqlは問題なく動作してるので、web上にいろいろ情報もありますが、まだ、解決までいってませんが、見えてきた気がしてます。 良いヒントを頂きました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問