0

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

列データの改行を処理する方法がわかりません。一部の列は説明であり、改行が含まれている場合があります。データの改行の数が一定でない可能性を処理するためのオプションがSQLローダーに見つかりません。

センテンス値を使用してテキストファイルのレコードを終了または開始してから、CONTINUEIFを使用できるようです。次に、データ内のセンテンス値の処理の問題が発生します。

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

これにどのようにアプローチできるかについてのアイデアはありますか?

ありがとう!

4

3 に答える 3

3

テキスト ファイルの前に EXPDP と IMPDP を調べます。10g では、datapump を使用して外部テーブルを読み書きできます。ここを参照してください。エクスポートは次のように簡単になります

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 ;

エキゾチックな文字、日付または数値の変換/フォーマット、さらには生のバイナリ データについて心配する必要はありません。

于 2009-06-27T00:21:40.250 に答える
2

これらの異なるデータベース間でデータベース リンクを作成する方が簡単ではないでしょうか? データベース リンクを使用すると、C# アプリを作成する必要がなくなります。selectステートメントを使用して、他のデータベースからデータを選択するだけです。

于 2009-06-26T15:25:27.893 に答える
1

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

于 2009-06-26T15:39:05.340 に答える