5

次のようなデータファイルがあります。

    1            2          3        4             5            6    
FirstName1 | LastName1 | 4224423 | Address1 | PhoneNumber1 | 1/1/1980
FirstName2 | LastName2 | 4008933 | Address1 | PhoneNumber1 | 1/1/1980
FirstName3 | LastName3 | 2344327 | Address1 | PhoneNumber1 | 1/1/1980
FirstName4 | LastName4 | 5998943 | Address1 | PhoneNumber1 | 1/1/1980
FirstName5 | LastName5 | 9854531 | Address1 | PhoneNumber1 | 1/1/1980

私の DB には 2 つのテーブルがあり、1 つはPERSON用、もう 1 つはADDRESS用であるため、列1、2、3、および 6を PERSON に、列4 および 5を ADDRESSに格納する必要があります。SQL ローダーのドキュメントで提供されているすべての例はこのケースに対応していますが、固定サイズの列のみであり、データ ファイルはパイプで区切られています (これを 2 つの異なるデータ ファイルに吐き出すことはオプションではありません)。

誰かがこれを行う方法を知っていますか?

いつものように、助けていただければ幸いです。

4

3 に答える 3

3

別のオプションとして、ファイルを外部テーブルとして設定し、外部テーブルから必要な列を選択して挿入を実行することもできます。

于 2010-11-06T03:20:28.010 に答える
1
options(skip=1)
load data
infile "csv file path"
insert into table person
fields terminated by ','
optionally enclosed by '"'
trialling nullcols(1,2,3,6)

insert into table address
fields terminated by ','
optionally enclosed by '"'
trialling nullcols(4,5)
于 2015-02-01T06:36:30.647 に答える
0

SQLLoaderがこれをサポートしていなくても(よくわかりませんが)、awkなどで前処理してからロードすることを妨げるものは何もありません。例えば:

cat 1.dat | awk -F '|' '{print $1 $2 $3 $6}' > person.dat
cat 1.dat | awk -F '|' '{print $4 $5}' > address.dat
于 2010-11-06T02:37:48.763 に答える