SQLローダーでORA-12899値が大きすぎます

こんばんは。

 

今日はSQLローダーを使ってDBに値を登録する際に出たエラーで

解決までにちょっとだけ時間がかかったことをメモ。

Javaで出力したファイルをSQLローダーを使ってDBに登録する、という流れなんですが

ORA-12899: 列"USERID"."USER_INFO_TABLE"."USERID"の値が大きすぎます(実際: 8、最大: 7)

と警告が出てうまくいかない…何故?

 

Javaはクライアントのマシンで出力したCSVファイル。

そのファイルをサーバーに転送、SQLローダーでDBにデータが登録される。

 

そもそもDBの定義と登録しようとしているデータの桁数が合っていない?

いやいやデータは7桁、登録先テーブルのカラムの桁数もVARCHAR(8)。

 

ならCSVファイルに余分なデータが入っている?

特に見当たらない。改行コードはCRLF(\r\n)。

…これ?これなのか?

試しに改行コードをLFに(\n)してサーバに転送、SQLローダーを実行してみると…

 

…うまくいきましたね。

 

どうやらウィンドウズの改行コード:CRLF

サーバー側はUNIXのため改行コード:LF

この差のために発生した事象のようです。

…ここから、どう改修しようかがキモですがとりあえず原因が分かってスッキリ。

 

後から調べたらこのサイトが参考に&勉強になりました!ありがたや×2

http://www.oracle.co.jp/forum/thread.jspa?threadID=2001867

改行コードについては以下で勉強になりました。

http://ash.jp/code/return.htm