1

FIRST:はい、CONCATENATEとCONTINUEIFについては知っていますが、ドキュメントを理解するのに十分な知識がない可能性があります。私は彼らが私の問題をどのように解決するかを「理解」していません。ありがとうございました...

私は、sqlldrを介してOracleDBにインポートするためのファイルを作成する必要がある立場にあります。

列は「〜」で区切る必要があります(質問しないでください)。ファイルファイルを作成する際に、引用符と改行に関してsqlldrがどのように動作するかについていくつか懸念があります。

単純な行に列の値を含める場合:

One, Hello~World I "Like" you, and Three

これをファイルに出力するにはどうすればよいですか?私の最初の推測は

One~"Hello~World I "Like" you"~Three

CTLファイルで指定された「〜」オプションで囲まれたフィールドでインポートするのは簡単だと思います。処理方法がわからないのは、ファイルを作成するときの「いいね」の周りの引用符です。さらに逃げる?どうやって?

追加のボーナス質問:フィールドにはラインブレーキが含まれる場合があります。「生」と書いてあると

one~Line
Break~three

これらを「つなぎ合わせる」ために使用できるオプションがCTLファイルにありますか?ブレークは異なる列で発生する可能性があり、レコードまたは列ごとに複数のブレークが存在する可能性があります。

前もって感謝します!

4

1 に答える 1

2

いくつかの実験の後、これが私が発見したものです:

使用中

FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' 

CTL ファイル内のテーブル構造

key:number, msg:varchar2

引用符と区切り文字を処理する正しい方法は次のとおりです。

1~Hello World
2~"Hello~World"
3~"Hello ""World"""
4~"Hello~""World"""

したがって、データに区切り文字が含まれている場合は、値全体を引用し、値内の引用符を 2 つの引用符に置き換えます。

改行に関する限り、別の質問でそれを尋ねます。

于 2009-06-26T13:46:05.817 に答える