5 Replies Latest reply on Apr 1, 2013 7:44 AM by 1000224

    sqlloaderでうまくデータがインポートできません

    1000224
      sqlloaderでデータをインポートしようとしているのですが、うまくインポートができません。

      インポートしようとしているcsvファイルは約9,000万行ありますがsqlloaderを実行すると
      「ロードは完了しました」とはでるものの、実際には2万行弱しか入っていない状態です。

      エラーメッセージが出るわけでもないので原因を探れないのですが、可能性として
      上げられることがあったら教えていただければと思います。
        • 1. Re: sqlloaderでうまくデータがインポートできません
          asahide
          実際のコマンドライン(パラメータファイル等含めて)と、バッドファイルやDISCARD、ログファイル等はあげられますでしょうか。
          9000万行のうち、例えば20010行程度を取り出してロードするとどうなりますでしょうか。


          後、Oracleのバージョン、OSの種類、バージョン等の環境情報も記載して頂ければと。
          • 2. Re: sqlloaderでうまくデータがインポートできません
            1000224
            ご返信ありがとうございます。

            >実際のコマンドライン(パラメータファイル等含めて)

            sqlldr id/pass control='test.ctl' skip=1

            です。

            >ログファイル

            エラーの発生が記録されていたのと、最後に
            「最大エラー件数を超えました - 上の統計が不完全な実行に影響しています。」
            という表記がありました。

            一定数のエラーがでると、その時点で処理が終了する、といったことはあるのでしょうか。
            エラーが何回あっても実行し続ける、ということは可能なのでしょうか。

            >9000万行のうち、例えば20010行程度を取り出してロードするとどうなりますでしょうか。

            20000行だけ抜き出して実行してみましたが、9000万行の場合と同じだけインポートされました。

            >後、Oracleのバージョン、OSの種類、バージョン等の環境情報も記載して頂ければと。

            OS:Linux
            バージョン:2.6.32

            Oracleのバージョン:11.2


            です。

            それでは、よろしくお願い致します。
            • 3. Re: sqlloaderでうまくデータがインポートできません
              tmtsmic
              こんにちは。

              挿入エラーの許容最大数はあるみたいですね。

              Oracle® Databaseユーティリティ 11gリリース2 (11.2)
              8 SQL*Loaderコマンドライン・リファレンス
              http://docs.oracle.com/cd/E16338_01/server.112/b56303/ldr_params.htm#sthref468
              • 4. Re: sqlloaderでうまくデータがインポートできません
                asahide
                sqlldr id/pass control='test.ctl' skip=1
                test.ctlの中身をご提示ください。
                エラーの発生が記録されていたのと、最後に
                「最大エラー件数を超えました - 上の統計が不完全な実行に影響しています。」
                という表記がありました。
                すみません。
                ログは出力されていないという理解で正しいでしょうか。
                ログ出力を行う設定で再度実施して、ログを提示頂ければと考えてます。
                一定数のエラーがでると、その時点で処理が終了する、といったことはあるのでしょうか。
                エラーが何回あっても実行し続ける、ということは可能なのでしょうか。
                以下を参照下さい。
                ERRORS=-1 と設定すれば要件にあうと思います。
                <<http://docs.oracle.com/cd/E16338_01/server.112/b56303/ldr_params.htm#sthref468>>
                >9000万行のうち、例えば20010行程度を取り出してロードするとどうなりますでしょうか。
                20000行だけ抜き出して実行してみましたが、9000万行の場合と同じだけインポートされました。
                具体的に何件がロードされたのでしょうか。
                エラーは発生しなかったのでしょうか。

                OS:Linux
                バージョン:2.6.32
                こちらはLinuxのカーネルのバージョンですよね。
                どのディストリのどのバージョンを利用されているか記載頂ければと。
                #今回は必要なさそうですけど
                Oracleのバージョン:11.2
                OracleのバージョンはV$VERSIONで出てくる4ケタで記載頂ければと。
                #今回は必要なさそうですけど
                • 5. Re: sqlloaderでうまくデータがインポートできません
                  1000224
                  ご返信ありがとうございます。

                  ERRORSをctlファイルで設定したところ、以前より多い行のインポートができましたので、インポートができなかったのはエラーが制限を超えていたからということのようです。

                  ありがとうございました。