0

SQL Server 2012 の一時データベースにデータを挿入しようとしています。

これは私のデータであり、使用されるデータ型は次のとおりです。

1234ab  nchar(25) NOT NULL primary key
240     smallint
4535ab  nchar(10)
04/01/2013  date
58f658      nchar(6)
584g6555    nchar(9)
Insufficient Data   text
10      tinyint
N/A     nchar(5)
N/A     nchar(5)
4       smallint
N/A     nchar(5)
N/A     nchar(5)
4       smallint
N/A     nchar(5)
N/A     nchar(5)
4       smallint
51651.00    numeric(10,7)
65465.50    numeric(14,10)
65465.00    numeric(10,7)
4845.00     numeric(14,10)
04/01/2013  date
5465.00     numeric(18,3)
5465.00     numeric(18,3)
5546.00     numeric(10,7)
test.html   text
note test   text

すべての非数値データは、インポート時に適切な「 ' 」で囲まれます。(ところで、一部のデータ型は必要以上に大きいように見えますが、これはインポートをテストするための小さなデータ サンプルです)
しかし、次のエラーが発生しています。

int をデータ型数値に変換する算術オーバーフロー

通常のINSERT INTOステートメントを使用しているだけです。私はかなり長い間自分の画面を見つめていたので、読み直すかもしれません..しかし、ここで何が欠けているのでしょうか? データはドメインよりも大きくないようです。

ところで、さらに情報が必要な場合はお知らせください。

4

1 に答える 1

0

51651.00 数値 (10,7)

「numeric(10, 7)」は合計 10 桁を意味し、そのうち 7 桁は小数点の右側にあります。これでは、「51651」の小数点の左側に十分なスペースがありません。

別の dbms を使用すると、より有益なエラー メッセージが表示される場合があります。これは PostgreSQL からのものです。

ERROR:   numeric field overflow
DETAIL:  A field with precision 10, scale 7 must round 
         to an absolute value less than 10^3.
于 2013-04-12T22:18:41.753 に答える