web-dev-qa-db-ja.com

OracleデータベースをテキストのSQLスクリプトにダンプする

mysqldumpまたはpg_dump やっている。そのため、アクティブなデータベースをSQLクエリを含むテキストファイルにダンプし、このデータベース全体を再現します。 MySQLおよびPostgreSQLでは、これは通常のデータベースダンプ形式です。

Oracleに存在しますか?どうすればできますか?

それが標準的なOracleのものでなければ、それは全く問題ではありません。問題の解決策が必要です。単一のテーブルのエクスポートはnotで十分です。DB全体のダンプを要求しています。

これは、大規模なプロジェクト(数百万行のDBを使用)の開発者環境が縮小されていますが、それでも数百のテーブルと非常に複雑な構造を持っています。そして、私はそれで遊びたいです速い。私はそれをいじっている間、それに対してトリッキーな修正を実行できるようにする必要もあります。バイナリダンプではできません。テキストではできます。

データベース自体にはそのようなものはありません。

データベース開発ツールを使用して、SQL Developerで同様のことを実行できます。

SQL Developerを使用してデータをエクスポートする方法

Tools/Database Exportツールを使用すると、エクスポートするオブジェクトを指定できます。SQLDeveloperは、データを挿入ステートメントとして、オブジェクトを再作成するためのSQLファイルを生成します。

3
Balazs Papp

Oracleに存在しますか?

Oracle環境には、Data Pumpと呼ばれる同様のユーティリティが存在します。

どうすればできますか?

全データベースのエクスポートを実行するには、expdpコマンドラインツールを使用します。

例:

expdp hr DIRECTORY=dpump_dir2 DUMPFILE=expfull.dmp FULL=YES NOLOGFILE=YES

次に、impdpを使用して、別のデータベースにインポートできます。

例:

impdp hr DUMPFILE=dpump_dir1:expfull.dmp FULL=YES LOGFILE=dpump_dir2:full_imp.log

DUMPFILEパラメータを指定すると、ダンプファイルと呼ばれるバイナリファイルが書き込まれます。 [〜#〜] sqlfile [〜#〜] パラメータ(SQLFILE=/my/file/name.sql)インポートによって実行されるすべてのSQL DDLを取得できます。

詳細は要件によって異なります。

Oracleドキュメントでは、ここで説明できる以上のことが説明されています。

Oracle Data Pumpの概要

6
JSapkota

正確な要件はあいまいなので、これを投稿します。必要なデータを外部テーブルに書き込むこともできます。これにより、別のデータベースのインポート機能を使用してインポートするために使用できる(たとえば)CSV形式のデータが得られます。

DDL/DMLステートメントとしてデータを取得するだけでは、私があなたがしようとしていると思うことを実行するには十分でない場合があることに注意してください。データ型、長さ、形式などに違いがあるため、あるインスタンスタイプから別のインスタンスタイプに移行する場合に問題が発生する可能性があります。

1
Phil Sumner

FlywayやLiquebaseなどのツールが役立つ場合があると思います。彼らはSQL、XML、そしておそらく何か他のものでダンプを作ることができるようです。このツールは簡単に使用できませんが、SQL Developerよりもはるかに柔軟に見えます。たとえば、アップロードする前にデータをフィルタリングする必要がある場合。

0
Anton Chekmarev