2016-04-26 15 views
0

外部tar.gzファイルからoracleデータベース・テーブルにデータをロードしようとしています。私はSQLLoaderを使って標準のテキストファイルからデータを簡単に読み込むことができますが、単語ファイルの代わりにtar.gzファイルを持っていれば同じことをする方法がわかりません。SQLLoaderを使用して、tar.gzファイルから直接データベーステーブルにデータをロードできますか?

私は多少役立つ次のリンクを見つけています:

http://www.simonecampora.com/blog/2010/07/09/how-to-extract-and-load-a-whole-table-in-oracle-using-sqlplus-sqlldr-named-pipes-and-zipped-dumps-on-unix/

リンクの著者は、.tar.gzファイルの代わりに.dat.gz使用しているが。とにかくテキストファイルの代わりにtar.gzファイルからSQLローダーを使用してOracleデータベーステーブルにデータをロードする方法はありますか?

また、私の問題の一部は、新しいtar.gzファイルから毎時同じテーブルにデータを読み込むはずです。例えば、 1時間目に私はfile1.tar.gzを持っていて、私のoracleデータベースのTABLEに10行のデータをすべてロードします。時間2では、私はfile2.tar.gzを持っています。私は自分のOracleデータベースの同じTABLEにその10行のデータをロードする必要があります。しかし、file2.tar.gzのSQLLoaderで抽出された10行は、file1.tar.gzから抽出された最初の10行を置き換えています。どのように私は1から10行とfile2.tar.gzの行としてfile1.tar.gzから行を11から20のSQLローダーを使用して保存することができますか?

+0

tarには、1つのテキストファイル、または複数のファイル、またはファイルを含むディレクトリが含まれていますか? –

+0

@AlexPooleシングルテキストファイル。私の問題の1つは、新しいtar.gzファイルから毎時同じテーブルにデータをロードするはずだということです。 1時間目に私はfile1.tar.gzを持っていて、私のoracleデータベースのTABLEに10行のデータをすべてロードします。時間2では、私はfile2.tar.gzを持っています。私は自分のOracleデータベースの同じTABLEにその10行のデータをロードする必要があります。しかし、file2.tar.gzのSQLLoaderで抽出された10行は、file1.tar.gzから抽出された最初の10行を置き換えています。 どのようにしても、SQL Loaderを使用してfile1.tar.gzの行を1-10行、file2.tar.gzの行を11-20行として保存できますか? –

+0

その情報をコメントではなく質問に追加してください。コントロールファイルも追加してください。あなたは 'append'ではなく' truncate'または 'replace'を持っていると思いますか? –

答えて

0

魔法は「zcat」部分にあります。 zcatは圧縮ファイルから出力できます。 tar.gzを含む。

たとえば、try:zcat yourfile.tar.gzと入力すると、出力が表示されます。指定したURLの例では、zcatの出力をSQLLDRが読み取れる場所にリダイレクトしています。

+0

Hmmmありがとう、これはかなり役に立ちます 私の問題の一部は、毎時新しいtar.gzファイルから同じテーブルにデータを読み込むことになっています。例えば、 1時間目に私はfile1.tar.gzを持っていて、私のoracleデータベースのTABLEに10行のデータをすべてロードします。時間2では、私はfile2.tar.gzを持っています。私は自分のOracleデータベースの同じTABLEにその10行のデータをロードする必要があります。しかし、file2.tar.gzのSQLLoaderで抽出された10行は、file1.tar.gzから抽出された最初の10行を置き換えています。どのように私は1から10行とfile2.tar.gzの行としてfile1.tar.gzから行を11から20のSQLローダーを使用して保存することができますか? –

+0

URLに投稿した例を使用すると、これは切り捨てるのではなく行を追加するので、1-10ファイル1、11-20ファイル2、21-30ファイル3などが得られます。 – d1ll1nger

+0

制御ファイルには、私が気付かなかった切り詰めがありました。これをappendに置き換えると、問題が解決されました。本当にありがとう! –

関連する問題