3954275行の挿入文を使用してスクリプトをOracle 10gにインポートするにはどうすればよいですか。私はsqlplus user/pass @ script.sql
でそれを行うことができますが、これは遅いです(さらに悪いことに、この900MBファイルの最後にコミットがあります。私のOracle構成がこれを処理できるかどうかはわかりません)。データをインポートするためのより良い(より速い)方法がありますか? Btw。 DBはインポート前に空です。インポート3954275 Oracle 10gへの挿入文
答えて
SQL*Loader
を使用してください。
データを別の形式にしていない場合でも、INSERT
コマンドを解析することができます。
上記と一致します。SQL * Loaderを使用します。それはオプションがない場合は、SQL Plusは、スクリプトの先頭で声明
SET arraysize 1000;
を置くことによってでもたらすことが
しかし、あなたはブロックの大きさを調整することができます。これは自分のスクリプトの単なる例であり、待ち時間などを考慮してニーズに合わせて細かく調整する必要があるかもしれません。デフォルトは15のようにデフォルト設定されていると思いますので、スクリプトでオーバーヘッドが大きくなります。
900MBファイルに同じテーブルへの挿入文が含まれている場合は、SQL * Loaderを使用することをお勧めします。多数のテーブルが含まれていると面倒です。しかし、これは最速のオプションです。
何らかの理由で少し改善があれば、セッションのCURSOR SHARINGパラメータがFORCEまたはSIMILARに設定されていることを確認してください。ファイル内の各insertステートメントは、値を除いて同じである可能性があります。 CURSOR_SHARINGがEXACTに設定されている場合、各INSERTステートメントは一意であるため、ハード解析する必要があります。 FORCEとSIMILARは自動的にVALUES句のリテラルを変数にバインドし、ハード解析の必要性を何度も何度も取り除きます。
あなたはこれをテストするには、以下のスクリプトを使用することができます。
set echo on
alter system flush shared_pool
/
create table t
(id int
, name varchar2(30)
)
/
set echo off
set feedback off
set heading off
set termout off
spool sof11.txt
prompt begin
select 'insert into t (id,name) values (' || to_char(level) || ', ''name' || to_char(level) || ''');'
from dual
connect by level <= 10000
/
prompt end;;
prompt/
spool off
set termout on
set heading on
set feedback on
set timing on
@sof11.txt
set timing off
alter session set cursor_sharing = force
/
set timing on
@sof11.txt
set timing off
alter session set cursor_sharing = exact
/
set echo off
drop table t purge
/
の例では、 "; トン(ID、名前)の値(1、 'NAME1')に挿入" のような万のステートメントを実行します。私のラップトップの出力:
SQL> alter system flush shared_pool
2/
Systeem is gewijzigd.
SQL> create table t
2 (id int
3 , name varchar2(30)
4 )
5/
Tabel is aangemaakt.
SQL> set echo off
PL/SQL-procedure is geslaagd.
Verstreken: 00:00:17.10
Sessie is gewijzigd.
PL/SQL-procedure is geslaagd.
Verstreken: 00:00:05.50
CURSOR_SHARINGをFORCEに設定して3倍以上の速さです。
これが役に立ちます。
よろしく、 ロブ。
- 1. インポートエラー(Oracle 10gのからSQL Server 2005へのインポート)
- 2. Oracle 10g複数のDELETE文
- 3. Oracle 10gインポートエラークイック質問
- 4. Oracleの同義語への挿入
- 5. Oracle 10gインポートエクスポート質問
- 6. Oracle 10g-エクスポートおよびインポートテーブル
- 7. Oracle 10gのフラッシュバック表
- 8. Oracle 10g NLSのパラメータ
- 9. oracleへのAccessテーブルのインポート
- 10. Oracle挿入トリガー
- 11. イメージをoracle 10gに挿入するには何が必要ですか?
- 12. Oracle 10gに暗号化されたデータを挿入する方法
- 13. Oracle 10g Express .NET Connector
- 14. Oracle 10g SQLソートVARCHAR2
- 15. ORACLE 10g:外部キー制約エラーなしでインポートするには?
- 16. Oracle 10gの出力順序
- 17. Oracle 10g Expressのバージョン管理
- 18. PreparedStatementとOracle 10gのバグ
- 19. 文字列への挿入の検索
- 20. Oracle 10gでのパフォーマンスへのパッケージサイズの影響
- 21. Oracle BPEL 10gプロセスからApache ODE BPMへの移行
- 22. Oracleのバルク挿入パフォーマンス
- 23. oracle内のあるテーブルから別のテーブルへレコードを挿入
- 24. のOracle 10gの予期しない "無効な文字" エラー
- 25. Oracle 10g:選択文内のCASE(ORA-00936エラー)
- 26. データベースへの挿入
- 27. Oracleの挿入/更新文の表を選択しますか?
- 28. 一部のユニコード文字は "?" DelphiからOracleに挿入するときのマーク
- 29. DBExpressを使用してOracle 10gでレコードの挿入制限が255になるのはなぜですか?
- 30. PLSQLプログラムを使用してテキストファイルからOracle 10gのテーブルに挿入する方法は?