SQLローダースクリプトは、sysdate、ユーザーの追加に役立ちます
-
28-09-2019 - |
質問
ファイルからデータをロードしようとしています。Created_dateとupdated_dateをsysdateにcreate_byに設定し、ユーザーにupdated_byを設定したい
ここで私が働いているテーブル:
CREATE TABLE CATALOG
(CNO NUMBER,
CTITLE VARCHAR2(25),
CREATED_BY VARCHAR2(10) NOT NULL,
CREATED_DATE DATE NOT NULL,
UPDATED_BY VARCHAR2(10) NOT NULL,
UPDATED_DATE DATE NOT NULL,
CONSTRAINT CATALOG_PK Primary Key (CNO));
ここにデータファイルがあります。
1,"Title 1"
2,"Title 2"
3,"Title 3"
4,"Title 4"
5,"Title 5"
6,"Title 6"
そして私の制御ファイル:
LOAD DATA
INFILE "mydata.csv"
INTO TABLE CATALOG
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE "SYSDATE", UPDATED_BY "USER", UPDATED_DATE "SYSDATE")
SQLローダーでロードしようとすると...すべてのレコードが拒否されます。
Record 1: Rejected - Error on table CATALOG, column CREATED_BY.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 2: Rejected - Error on table CATALOG, column CREATED_BY.
Column not found before end of logical record (use TRAILING NULLCOLS)
.......
私が間違っていることはありますか?前もって感謝します。
解決
Oracleが言うことをしてください:追加してください TRAILING NULLCOLS
あなたの制御ファイルに:
LOAD DATA
INFILE "mydata.csv"
INTO TABLE CATALOG
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE "SYSDATE", UPDATED_BY "USER", UPDATED_DATE "SYSDATE")
最初の2列のみが入力ファイルにあるため、これが必要です。 remaingのものは純粋に計算されます。
指定しないと、Oracleは3番目、4番目などを読み込もうとしますが、見つけることができません。
他のヒント
制御ファイルでこれを試してください
(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE SYSDATE, UPDATED_BY "USER", UPDATED_DATE SYSDATE)
所属していません StackOverflow