アプリ版:「スタンプのみでお礼する」機能のリリースについて

$conn = pg_connect("host=xxxxxx user=postgres port=5432 dbname=xxxx");
$result = pg_Exec ($conn, $SQLSTR) ;

HTML上から上記のようにphpの関数 pg_Exec を使用して、
copy文を実行したいのですが、うまくできません。
phpからcopy文を実行することはできないのでしょうか?
コピー文:"\copy tablename with oid to /tmp/output"
ちなみに、$SQLSTRにselectやupdateなどのSQL文をいれると
うまくいきます。

使用している環境は、OSがlinuxで、APACHE+php3+postgres6.?? です。

A 回答 (2件)

> バックアップ用に、OIDごとコピーしようと思っていたのですが、oidもコピーできるのでしょうか?



可能かと思います。
COPY tabename TO '/foo/foo.csv' WITH OIDS DELIMITERS ','
とかでいけるのではないでしょうか。
※度々ですが6.*系でできるのかどうかは判りかねます。

> テーブルに対してユーザapacheの権限を与えるには
どうしたらよいでしょうか?

具体的な命令文についてはURLなどのマニュアルをご覧下さい。
場合によってはテーブルに対する云々より、pg_hba.confなどをいじる必要があるかもしれません。

参考URL:http://www.postgresql.jp/document/pg653doc/j/use …

この回答への補足

『COPY tabename WITH OIDS TO '/foo/foo.csv'』で
telnetで実行したpsqlの\copyと同じ出力結果が得られました。
ありがとうございました。
ちなみに、インストールされているposqgresのバージョンを
確認する方法があったら教えてください。
あと、出力されたファイルがSJIS形式になるのですが、
EUC形式にすることは可能でしょうか?

補足日時:2005/07/17 06:09
    • good
    • 0

\copyなど、\~の命令文はpsql上でのみ発行できる命令文だったと思います。


PostgreSQLでは通常のSQL文として、
COPY tabename TO '/foo/foo.csv' DELIMITERS ','
と言ったものがありますので、そちらで行われたらいかがでしょうか?
但し、PostgreSQL6系で利用できたかは、わかりません。(^^;

この回答への補足

バックアップ用に、OIDごとコピーしようと思っていたのですが、
oidもコピーできるのでしょうか?
バックアップについては、pg_dumpが使えそうですが、
htmlから実行しようとすると、ユーザがapacheで、
テーブルに対して権限がありません。
テーブルに対してユーザapacheの権限を与えるには
どうしたらよいでしょうか?

補足日時:2005/07/13 20:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す