0

Oracle テーブルにロードするデータを含むサンプル csv ファイルがあります。サンプルデータはこんな感じ

1,aa,b,c
2,x,yy,zzz
1,aa,b,c
2,x,yy,zzz

これらは '1' と '2' の最初の文字で区別される 2 つの異なるレコードで、最初のレコードの列と 2 番目のレコードの列を含むデータ テーブルを db に持っています。「WHEN」句を使用してデータをロードしようとしましたが、問題はデータを順番にロードしないことです。最初に '1' のデータをロードし、次に '2' のデータをロードします。お気に入り

ID  col1    col2    col3    col4    col5    col6
1   aa      b       c       null    null    null
1   aa      b       c       null    null    null
2   null    null    null    x       yy      zzz
2   null    null    null    x       yy      zzz

ローダーコードは次のとおりです。

load data
infile 'C:\sample.csv'
APPEND 
INTO TABLE "temp"
WHEN "ID" = '1'
fields terminated by "," optionally enclosed by '"' trailing nullcols
(
Col1,
Col2,       
Col3
)
INTO TABLE "temp"
WHEN "ID" = '2'
fields terminated by "," optionally enclosed by '"' trailing nullcols
(
Col4,
Col5,       
Col6
)

データを次のようにロードしたいだけです:

ID  col1    col2    col3    col4    col5    col6
1   aa      b       c       null    null    null
2   null    null    null    x       yy      zzz
1   aa      b       c       null    null    null
2   null    null    null    x       yy      zzz

どんな助けでも大歓迎です。

4

3 に答える 3

0

sqlloader コマンドを使用してデータをロードしている場合は、パラメータ rows = 1 を追加してみてください。これにより、sqlloader はテーブルにデータの各行を強制的に挿入し、ファイルのロードをシーケンシャルにします。デフォルトでは、行数は 64 です。これが、小さなファイルのシーケンシャル ロードを取得していない理由です。

お役に立てれば..

于 2016-02-11T06:36:01.383 に答える