5

SQLローダーのInsertステートメントとAppendステートメントの違いを教えてもらえますか?次の例を検討してください:これが私の制御ファイルです

     load_1.ctl
     load data 
     infile 'load_1.dat' "str '\r\n'" 
     insert*/+append/* into table sql_loader_1 
     ( 
      load_time sysdate, 
      field_2 position( 1:10),
      field_1 position(11:20)
     ) 

これが私のデータファイルです

     load_1.dat
     0123456789abcdefghij
     **********##########
     foo         bar
     here comes a very long line 
     and the next is 
     short 
4

2 に答える 2

10

ドキュメントはかなり明確です。INSERT空のテーブルにロードするとき、およびAPPEND(保持したい)データを(保持する可能性がある)テーブルに行を追加するときに使用します。

APPENDテーブルが空の場合でも機能します。INSERTテーブルが空であると予想している場合は、それが当てはまらない場合はエラーが発生し、予期しない結果を回避できるため、より安全な場合があります(特に、一意のインデックス制約違反などの他のエラーに気付かず、取得しない場合)。および/またはロード後のデータクレンジング。

于 2011-01-27T08:20:21.923 に答える
-4

違いは2つの点で明らかです。

  • appendは、ステートメントの最後にある場合にのみレコードを追加します
  • insertは、必要な場所に挿入します。つまり、テーブルに10列がある場合、5列にのみ挿入できますが、appendでは挿入できません。

追加では、データとテーブルの両方に同じ列が必要です。つまり、列レベルではなく行レベルでデータを挿入します。

また、テーブルにデータがある場合は挿入を使用できません。データが空の場合は、挿入を使用できるのは自分だけです。

それが役に立てば幸い

于 2013-03-23T12:59:03.663 に答える