2017-06-27 11 views
1

私は、BPC xmlスキーマを持つtxtファイルから特定のテーブルにデータを挿入しようとしています。 txtファイルには多くの行が含まれています。何らかの理由で値が '2999999999'に達するとエラーになります。私はIntとしてキャストしようとしましたが、まだ何もありません。ファイルからの挿入のためにnvarchar値の変換がintカラムをオーバーフローしました

これは、SQLクエリです:

INSERT INTO regioneanhotelidmapping(RegionID, EANHotelID) 
    SELECT cast(RegionID as int), cast(EANHotelID as int) 

    FROM OPENROWSET(BULK 'D:\EAN\RegionEANHotelIDMapping\RegionEANHotelIDMapping.txt', 
          FORMATFILE='D:\EAN\eanRefresh\bcpxml\RegionEANHotelIDMapping.xml', FIRSTROW = 2) as BCP 

そしてこれはXMLです:

<?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<RECORD> 
    <FIELD ID="01" xsi:type="CharTerm" TERMINATOR="|" MAX_LENGTH="2000" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="02" xsi:type="CharTerm" TERMINATOR="\n" MAX_LENGTH="2000" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 

</RECORD> 
<ROW> 
    <COLUMN SOURCE="01" NAME="RegionID"  xsi:type="SQLNVARCHAR" NULLABLE="YES"/> 
    <COLUMN SOURCE="02" NAME="EANHotelID"  xsi:type="SQLNVARCHAR" NULLABLE="YES"/> 


    </ROW> 
</BCPFORMAT> 

とエラーです:メッセージ248、レベル16、状態1、行1 の変換nvarchar値 '2999999999'がint列をオーバーフローしました。

+3

2,147,483,647のSQL INT列の最大値です。したがって、2,999,999,999でオーバーフローしました。 2,147,483,647より大きい値を挿入する必要がある場合は、その列をbigintにする必要があります。 –

+0

こんにちは@JacobH!答えをありがとう。だから、私はそれのための列のタイプを変更するか、私はちょうどtxtからレコードを切り捨てる必要がありますか?問題は、これはマッピングテーブルであり、私はすべての結果を必要としています... – Oihc

+0

サイズを整数にする必要がある場合、はい、単に型をbigintに変更してください。 –

答えて

関連する問題