環境: Windows XP pro Ver. 2002 SP2 / Oracle 10g
現在SI試験に入るところ。
試験データとして、最大桁試験を行うため、
SQLLoaderでCSVファイルをアップロードすることに。
さて、ここで問題が発覚。
データ入れるときは1-2日は骨折りなことを覚悟しないといけないのね。
問題は
Varchar2(500)のデータがエラーで登録されないこと。
下記のようなエラーがログで吐き出される。
------
value used for ROWS parameter changed from 64 to 32Record 2: Rejected - Error on table schema.tablename, column ADDRESS.Field in data file exceeds maximum length
------
なぜかなぜかと調べていたら、制御ファイルの定義の問題だったことが発覚。
------
LOAD DATA
APPEND
INTO TABLE schema.tablename
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
ADDRESS CHAR,
....)
------
↑が問題だった。制御ファイルで上記のように指定していたため、
Char型定義での最大長255バイトしか受け付けられなかった。
っていうか、この制御ファイルのこの記述は、
Enterprise Managerで自動生成した制御ファイルのままじゃないか!
ややこしいこと、すなー!!
DB定義がVarchar型ならなぜVarchar定義で自動生成しないのか。。。
ということで、↓のように制御ファイルで定義すればおそらく問題ないでしょう。
まだ試してないけど。
------
LOAD DATA
APPEND
INTO TABLE schema.tablename
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
ADDRESS VARCHAR2,
....)
------
0 件のコメント:
コメントを投稿