• ベストアンサー

オラクルのエクスポートについて

こんにちわ。 あるdmpファイルをインポートした際、その中のデータには主キーの重複したレコードが存在しているらしく一意制約エラーでおちてしまいます。 もちろん、テーブル構造もエクスポートしている為、エクスポートした時点で、テーブル内がそのような状況になるということは有り得ないはずなのですが、バイナリエディタで覗くと実際、キーの重複したデータが存在しています。 というわけで、dmpファイルをバイナリエディタなどで編集するというようなことはナシで(あくまでオラクルユーティリティ内の範疇で)、そのようなdmpファイルを強引に作ることが出来るのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

テーブルをdropした後作り、主キー制約も作っておきます。その後、alter table文で主キー制約を無効にし、その状態でignore=yでインポートしてみてください。

ssssssssss
質問者

お礼

お返事遅くなりまして申し訳ありません。 主キーを無効にしたあと、重複データを作成し、エクスポート。 それから、主キーを有効に戻して、インポートすることによって期待していた現象が再現できました。 ありがとうございました。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

インポート先にテーブルがあってデータが入ったままなんて事はないですよね。 ignore=yのオプションつけてインポートすると、 テーブルあっても無視されますけど。

ssssssssss
質問者

お礼

お返事ありがとうございます。 inore=yも試して、 テーブルをdropしてから実行してもダメでした。 Cシェルによる自動化で実行しているため、心当たりの ある人もいないんです。 また、何か情報ございましたらよろしくお願いします。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

>強引に作ることが出来るのでしょうか? 方法は、わかりません。Exportした方に確認でしょうね。 対話形式で行った場合は、確認できないかも? 問題点は、データがインポートできないことではないのでしょうか? importのパラメータで、indexes=yがデフォルトなので nでインポートすれば読めませんか? Importの順序は以下の順であったと思います。 1.新しい表の作成 2.データ行インポート 3.索引を作成 4.トリガーをインポート 5.整合性制約が新しい表で使用可能になる 6.ビットマップ索引の作成

ssssssssss
質問者

お礼

お返事ありがとうございます。 indexes=nは試してみましたが、主キーは列制約のようなので、当方法ではダメでした。 また、何か情報ございましたらよろしくお願いします。

関連するQ&A

  • oracleのエクスポートについて

    こんにちわ 質問なんですが、oracleのデータを他のマシンに移行するためにテーブルをエクスポートしようと思うのですが、エクスポートする際、シーケンスもいっしょにエクスポートすることは可能なのでしょうか?

  • テーブルのエクスポート・インポート

    SQL Server2005 を使用しています。 テーブルのインポート・エクスポートに関して質問があります。 今まで、Oracleを主に使用していて、「EXP」「IMP」コマンドを使用して DMPファイルを介して別PCのデータベース間でテーブルのやり取りをしていました。(DB上のテーブルすべてや特定のテーブルのみなど) 同様のことをSQL Serverで実現したく下記を試したのですが上手くいきません。 1.Management Studio で「タスク」→「データのインポート(エクスポート)」   フラットファイル、Excel、MDBファイルなど試したのですが、   これらの中間ファイルを介した際にデータ型が変わってしまい   元の型のまま戻せない。   Oracleの「DMP」ファイルのようなものには落とせないのでしょうか? 2.「bcp」コマンド   これに関しては、複雑でよくわかりませんでした。   もし、このコマンドで実現可能であれば、やり方を教えて下さると   助かります。 以上、ながなが書きましたが宜しくお願い致します。

  • Oracle 8.1.6で・・・

    Oracle 8.1.6でAccessのようにテーブル構造をみたり、 データをみることのできるユーティリティーはご存知ないでしょうか。 SQL+は使い勝手が最近のviエディタよりもよくないのと、いままでAccessしか 触ったことがないのでなれないということで困っています。 オラクルのユーティリティーの名前自体がバージョンが変わると変わってしまう・・・というのは聞いたことがあるのですが・・・。 よろしくおねがいします。

  • oracleのテーブルExportについて

    oracle10gを使用しております。 テーブルに億桁のレコードが登録してある場合、 テーブルExportを行うと時間がかかってしまう&出力dumpファイルが 大きくなってしまうといった弊害があると思うのですが、 テーブルレコードを数万単位に分割してExportすることは可能でしょうか? また、その分割したファイルをImportする際は、Export前と同じく 一つのテーブルでレコードを管理することが可能でしょうか。 大雑把な質問で申し訳ありませんが、宜しくお願いします。 また、今回Export時に使用するコマンドは以下になります。 exp スキーマ名/パスワード constraints=y grants=y indexes=y tables=テーブルA file= テーブルA.dmp log=テーブルA.log

  • oracleのExportシェル作成

    oracle10gを使用しています。 テーブル単位のExportを行うシェルを作成しようと思っております。 テーブルをfilesizeを指定し分割したいのですが、 "エクスポート・ファイル: EXPDAT.DMP >"を検知、新たにファイル名を指定、Enter の書き方がわかりません。お力添え宜しくお願いします。 ファイル名は最初にexp_dump01.dmpを指定し、以降はexp_dump02.dmpと 番号をインクリメントさせたいと思っております。 現在、以下のようなシェルを作成しました。 #!/bin/sh #変数指定 CON='エクスポート・ファイル: expdat.dmp >' RET='エクスポートは警告なしで正常終了しました。' ICOUNT=1 #コマンド実行 expコマンド #結果取得 VAR=`command` #取得結果が次のファイル名を要求している場合 while [VAR=CON] do ファイル名をインクリメントしたものを指定 done #取得結果が正常終了を示した場合 if [VAR = RET] echo 'Exportが終了しました。' fi #次のコマンド実行

  • OracleからDB2への移行

    こんにちは。 OracleのExportファイル(dmp)を直接、DB2にロードする方法ってありませんか?

  • オラクル DMPデータのインポートについて

    オラクルDB(R8.1.7)でエクスポートしたDMPデータを(10.2G)にインポートができるかを まず教えていただけませんでしょうか。 可能であれば 注意点等お聞かせ頂けると助かります。

  • データベースのエクスポートとインポート

    OSもOracleのバージョンも同じ環境で、データベースを移行したいと思っています。    OS:WindowsXP Pro SP2    Oracle:9i (9.2.0) 新しいマシンは、Oracleをインストールしただけの状態です。 インストール時に自動で作成されたデータベースだけがあります。 (ユーザはまだ作成していません) この状態で、現状のマシンにあるデータを全て丸ごとエクスポート・インポートは可能なのでしょうか?移行したいデータベースには、3つのユーザが存在しますが、この3つのユーザを一度にインポートできないかと思っています。 EXPに、FULL というパラメータがありますが、ここで [ Y ] を指定した場合、3つのユーザのデータを丸ごとエクスポートできるのでしょうか?その場合、USERIDのパラメータには、どのユーザ名を設定すれば良いのでしょうか? エクスポートできれば、そのDMPファイルをインポートすれば良いだけだと思っているのですが・・・ (ちなみにデータベースを、あと2つ作成して、同じようにインポート・エクスポートしたいと思っています) Oracle初心者です。質問内容もまとまっていないかもしれません。 不足などがあれば補足要求下さい。 よろしくお願い致します。

  • Oracleのエクスポートでエラー

    Oracle9iでデータベース全体のエクスポートを取ろうとすると 以下のエラーが出てしまいます . クラスタ定義をエクスポート中 EXP-00056: Oracleエラー19206が発生しました。 ORA-19206: 問合せの値またはREF CURSORパラメータが無効です ORA-06512: "SYS.DBMS_XMLGEN", 行83 ORA-06512: "SYS.DBMS_METADATA", 行345 ORA-06512: "SYS.DBMS_METADATA", 行410 ORA-06512: "SYS.DBMS_METADATA", 行449 ORA-06512: "SYS.DBMS_METADATA", 行1156 ORA-06512: "SYS.DBMS_METADATA", 行1141 ORA-06512: 行1 EXP-00000: エラーが発生したためエクスポートを終了します。 見てみるとSYS.DBMS_XMLGENというテーブルは存在していませんでした。 どうすればデータベースのエクスポートが出来るでしょうか? 教えてください。

  • oracleについて

    oracle(11.1.0.7)でエクスポートしたdata pumpファイルを oracle(11.1.0.6)にインポートしようとしたら、インポートエラーのため、 全く入りませんでした。 oracle(11.1.0.6)に問題があるのでしょうか。 知っている方教えていただけませんでしょうか。よろしくお願いします。