6

SQL*Loaderを使用して日本語データをロードしているときに次のエラーが発生します。私のデータベースはUTF8(NLSパラメーター)であり、私のOSはUTF8をサポートしています。

Record 5: Rejected - Error on table ACTIVITY_FACT, column METADATA.
ORA-12899: value too large for column METADATA (actual: 2624, maximum: 3500)

私の制御ファイル:

load data
characterset UTF8
infile '../tab_files/activity_fact.csv' "STR ';'"
APPEND
into tableactivity_fact
fields terminated by ',' optionally enclosed by '~'
TRAILING NULLCOLS
(metadata CHAR(3500))

私のテーブル

create table actvuty_facr{
metadata varchar2(3500 char)
}

SQLローダーが間違った例外をスローする理由(actual: 2624, maximum: 3500)。2624は3500未満です。

4

1 に答える 1

7

すべてのデータファイル (UFT-16 を除く) のデフォルトの長さセマンティクスはバイトです。したがって、あなたの場合、文字ではなく 3500 バイトの CHAR があります。ファイルにマルチバイト文字がいくつかあり、2624 文字が 3500 バイト以上を使用しているため、(誤解を招く) メッセージが表示されます。

代わりに文字長セマンティクスを使用してこれを整理できます

制御ファイルのこの行を変更します

characterset UTF8

これに

characterset UTF8 length semantics char

CHARフィールド(およびその他のいくつか)の文字で機能します-テーブルを設定したのと同じ方法で、それぞれ最大4バイトの3500文字です。

詳細については、文字長セマンティクスに関するユーティリティ ガイドを参照してください。

于 2012-09-19T14:11:34.970 に答える