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

oracleはリモートSQLServerテーブルからデータを削除します

    より良い質問は、SQL ServerからOracleにデータを移動して、正常に配信されたすべての行をMSSSから削除する最良の方法は何だと思いますか?

    これらをループで実行して、一方に追加するときに、もう一方から削除するようにします。

    挿入時に不明なランダムなエラーが発生した場合は、ソースレコードを削除しないようにします。

    それが要点ですよね?

    この種のデータ移動を処理し、分散トランザクションループの挿入/削除ごとにコミットするより良い方法があります。

    ループの途中で最初にコミットするのは悪いことです。 Oracleでは、他のセッションでORA-01555エラーを発生させるのに適した方法です。ですから、可能であればそれは避けたいと思います。

    次に、挿入時の合理的なエラーの考えられる原因を完全に知っておく必要があります。列の長さ、FK、英国に違反しています...挿入時に破損する可能性のあるものの有限リストがあります。表領域を拡張できないなどの大きな問題が発生すると、システムが停止する必要があります。そのためにトラップする必要はありません。しかし、私が述べたようなアプリケーションの問題は管理が簡単です。

    これを書いているとしたら、OracleのLOGを使用してすべての行を一括挿入します。エラー 1つまたは少数の行のみが失敗したときに完全なロールバックを回避するため。

    これで、失敗したすべての行と失敗した理由を含むテーブルができました。これで、SQL Server側で、失敗したIDのリストにないすべての行を削除できます。

    同じことを達成しましたが、SLOW-BY-SLOWの代わりにSetベースの操作を使用しました。つまり、行ごとです。




    1. AWS AuroraRDSPostgresでユーザー定義関数を作成するにはどうすればよいですか

    2. SQLクエリで期間の合計を計算する

    3. ユーザーのmysqlアクセスが拒否されました(php経由で接続している場合にのみ発生します)

    4. SQLクエリで最も近い緯度/経度を見つける