sql >> データベース >  >> RDS >> PostgreSQL

antを使用したJDBCCOPY

    PgJDBCはCOPYをサポートしていません 直接ですが、CopyManagerを介して行います PGConnectionから取得できるAPI java.sql.Connectionのインターフェース PgJDBCによって返されます。

    残念ながら、COPYを混在させるプレーンSQLファイルからは使用できません。 他のコマンドでの操作。

    個人的には、psqlにシェルアウトします .sqlを実行するには Ant <exec>を使用するファイル 仕事。そうすれば、COPYを含めることができます SQLファイルのインラインデータ。

    PgJDBCがCOPYを処理できるようにすると便利です。 、しかしそれは簡単ではありません。これは事実上PostgreSQLの異なるプロトコルモードであり、プリペアドステートメントや実行などで通常のJDBCインターフェイスを使用することはあまり意味がありません。 execSQLScriptを提供できます カスタムのPGconnection しかし、Antの<sql>のようなものがあるので、それはあまり役に立ちません。 タスクはそれを使用しません。カスタムタスクを作成する必要があります。

    代わりに、PgJDBCは、COPYに入ったときに、ほとんどクライアントに嘘をつく必要があります。 COPYの後のモード コマンドの場合、JDBC仕様を無視する必要があり、JDBCステートメントの実行に応答して想定されていたことを実際に実行する必要はありません。これはあらゆる種類のものを壊す可能性があります。

    したがって、今のところ、はるかに簡単なオプションは、psqlを実行することです。 やりたいことをするコマンド。




    1. concatを使用したpdo更新ステートメントが機能していません

    2. SQLデータベースに重みを格納するためのベストプラクティス?

    3. SQLiteクエリ結果で区切り文字をコンマに変更します

    4. MySQL NULLIF()の説明