2011-11-07 4 views
0

私は別のOracleスキーマ/インスタンス上の2つのテーブル間のデータをコピーするcx_OracleToolのCopyData.pyスクリプトを使用するattempitingだ:cx_OracleTools CopyData.py - PK制約なしで使用しますか?

http://cx-oracletools.sourceforge.net/cx_OracleTools.html

私は私のテーブルに対してそれを実行すると、私はエラーを取得:

No primary or unique constraint found on table. 

私は、正直なところ、Oracleについてはあまりよく分かりませんが、私にはテーブルにPK制約があるとは思われません。

これのメリットは、便宜のためだけに設定されていると思います。近い将来に変更する可能性は低いです。

PK制約なしでこのシナリオでcopyData.pyを実行する方法はありますか?

乾杯、 ビクター

答えて

0

は問題はのCopyDataは行が転送先テーブルに存在するかどうかをチェックしていることであり、それはユニークなキーなしでそれを行うことはできません。

すべての行を挿入し、変更された行を更新しない場合は、--no-check-existsオプションを使用します。コードによれば、これは主キーチェックをバイパスします。

それ以外の場合は、--key-columns = COLSオプションを使用して、ユニークキーとして使用する列を手動で指定します。これにより、主キーチェックもバイパスされます。

+0

すごく、ありがとう、はい、それは素晴らしい=)。私はPKを使って既存のレコードをチェックしていることに気づいていませんでした。さて、私は、CopyDataを別のPythonから直接実行する方法を理解する必要があります。特にOOや関数ベースではありません。むしろ別のPythonスクリプトを実行するためにサブプロセスを呼び出すのではなく、 – victorhooi

+0

残念ながら、プログラム的な使用には向いていません。すべてがインラインであり、機能(!)さえありません。スクリプトを書き直すために真剣な努力を費やす気がしない限り、サブプロセスはおそらくあなたの最善のアプローチです。 –

関連する問題