SQLローダーでORA-12899値が大きすぎます
こんばんは。
今日はSQLローダーを使ってDBに値を登録する際に出たエラーで
解決までにちょっとだけ時間がかかったことをメモ。
Javaで出力したファイルをSQLローダーを使ってDBに登録する、という流れなんですが
ORA-12899: 列"USERID"."USER_INFO_TABLE"."USERID"の値が大きすぎます(実際: 8、最大: 7)
と警告が出てうまくいかない…何故?
そのファイルをサーバーに転送、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
改行コードについては以下で勉強になりました。