2016-06-23 7 views
-2

バッチファイルの自動化のためにファイルをsqlldrまでOracleサーバーにアップロードしようとしています。 sqlldrでファイルをOracleサーバーにアップロードするには時間がかかります。バッチを通して、1分に2100の行をアップロードします。 Oracle SQL Developerからcsvファイルから直接データをインポートしようとすると、1分で100k行が必要になります。SQLLDRのパフォーマンスを向上させるには?

これは私の.ctlファイルです:

OPTIONS(SKIP=1)                
LOAD DATA                    
INFILE "D:\\TestBackup\Event.csv"         
INSERT into table EVENT               
APPEND                    
fields terminated by ',' OPTIONALLY ENCLOSED BY '"'        
TRAILING NULLCOLS   
(BRANCH_ID,TOTAL_SALES,TOTAL_LOST_SALES,TOTAL_INVENTORY,INSERTDATE sysdate 
) 

これは私の.batファイルです:

sqlldr [email protected]/demo1 DATA='D:\Event.csv"  
CONTROL=D:\Insert.ctl LOG=Insert.log BAD=Insert.bad          

どのようにパフォーマンスを改善するには?

+0

'sqlldr'コマンドで引用符が間違っているのですか、正しく貼り付けられていませんか? – Glenn

+0

ドキュメントを見ましたか? BINDSIZEやREADSIZEの変更を検討することをお勧めします。 [そしてこれを参照してください](https://docs.oracle.com/cd/E11882_01/server.112/e22490/ldr_control_file.htm#SUTIL1135)。 –

+0

BINDSIZEの値を少し変えてみて、挿入速度が400行/秒になるまで最大12倍の速度を試してください。約1000行/秒を増やす考え。ありがとう –

答えて

1

ロード中にテーブルのロギングをオフにするには、alter table文を使用できます。ロギング有り無しの違いを見ることは興味深いでしょう。テーブルにはトリガーがありますか?ロード前にインデックスを削除し、ロード中に更新するのではなく、後で再作成する可能性がありますか?

ちょっとしたことを速めるかもしれないアイデアを投げ捨てるだけです。もしあれば、それがあれば報告してください。最も有益なものを見ることを楽しみにしています。

+0

それはサーバー上で正常に実行されます。まず、私は地元からこれを運びます。そのためには時間がかかります。今は100万行で3分かかりました –

関連する問題