[pgsql-jp: 34097] Re: JDBC での COPY
Shinzo Matthew SAITO
s-ml @ shinzo.net
2004年 10月 13日 (水) 12:19:58 JST
齊藤新三です。
宇野様、お返事ありがとうございます。
>>ひょっとしてJDBC経由で\copyは使えないのでしょうか?もし、使えないのでしたら、
>>こういった場合はどういった回避策があるのでしょうか。
>
>\copyはpsql自身が解釈実行するコマンドなのでJDBCでは実行できません。
>内部的にはCOPY FROM stdinやCOPY TO stdoutが使われています。下記参照。
>
>http://www.postgresql.jp/document/pg732doc/reference/sql-copy.html
>
>回避策としては、次のような選択肢があると思います。
>選択肢1: psqlを呼び出して\copyで処理させる
>選択肢2: psqlの\copyを真似た、COPY FROM stdinを使う処理を作成する
現在、選択肢2の方向で処理しているのですが、これもうまくいきません。手順は以下
のようなものです。
Java上で、以下のようなString sqlを作成します(テーブルのカラム数は3コとします)。
COPY table_name FROM STDIN;\n
1\tv1\tw1\n
2\tv2\tw2\n
…
\\.
次に、
Statement#executeUpdate(sql);
とすると、
エラーが派生します。エラー内容は以下の通りです。
org.postgresql.util.PSQLException: ERROR: syntax error at or near "1"
ちなみに、String sqlを一度ファイルに書き出して、それを
psql -U username < できたファイル名
で発行したところ、無事COPYできてしまいます。
JDBC経由でCOPY STDINの正しい記述方法をご存じでしたら、お教えいただけたら幸い
です。
よろしくお願いします。
☆----------------☆
Shinzo Matthew SAITO 齊藤 新三
E-mail mailto:s-ml @ shinzo.net
pgsql-jp メーリングリストの案内