2009-06-26 23 views
0

私は、Oracleストアドプロシージャから別のOracleデータベースにインポートするために、OracleストアドプロシージャのデータをテキストファイルにエクスポートするC#アプリケーションを作成するフロントエンド開発者です。データはSQL Loader(sqlldr)でロードされ、そのツールの機能を理解しようとしています。そのため、SQL Loaderで処理しやすい形式でファイルを出力できます。SQL Loaderでインポートするデータの改行を処理する方法

私は、列データの改行を処理する方法がわかりません。いくつかの列は説明であり、改行を含むことがあります。私は、SQL Loaderで、データ内に一定数の改行がない可能性を処理するオプションを見つけることができません。

文章の値を使用してテキストファイル内のレコードを終了または開始し、CONTINUEIFを使用することができたようです。それは、データ内の文脈的価値を扱うという問題を私に提示する。

この特定のアプリケーションでは重要ではありませんが、私はデータの忠実度を低減したくないため、休憩を取り除くことに躊躇しています。

私はこれにどのようにアプローチできますか?

ありがとうございます!

答えて

3

私は、テキストファイルの前にEXPDPとIMPDPを調べます。 10gでは、datapumpを使用して外部表を読み書きできます。 hereを参照してください。

SQL> CREATE TABLE EMP_50 
2 ORGANIZATION EXTERNAL 
3 (TYPE oracle_datapump 
4 DEFAULT DIRECTORY dmp_dir 
5 LOCATION (‘emp_50.dmp')) 
6) 
7 AS SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID = 50 
8 ; 

エキゾチックな文字、日付または数字の変換/書式設定、生のバイナリデータについても心配する必要はありません。

+0

それはおいしく見える私は月曜日に調査します –

+0

この回答は実際には私の文脈では機能しませんが、私は「受け入れなければならない」と受け入れなければなりません。 –

2

異なるデータベース間でデータベースリンクを作成する方が簡単ですか?データベースリンクを使用すると、C#アプリケーションを書く必要がなくなります。選択文で他のデータベースからデータを選択するだけです。

+0

同意。不幸にも、私の会社はDBリンクに対するポリシーを持っています。 : –

1

データには存在しない16進バイト文字列区切り文字を使用してSQL * Loader Stream Record Format(ドキュメントを参照)を使用します。行終了を誤って通知しないようなものを見つけるのは難しいことではありません。

関連する問題