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列をオーバーフローしました。
2,147,483,647のSQL INT列の最大値です。したがって、2,999,999,999でオーバーフローしました。 2,147,483,647より大きい値を挿入する必要がある場合は、その列をbigintにする必要があります。 –
こんにちは@JacobH!答えをありがとう。だから、私はそれのための列のタイプを変更するか、私はちょうどtxtからレコードを切り捨てる必要がありますか?問題は、これはマッピングテーブルであり、私はすべての結果を必要としています... – Oihc
サイズを整数にする必要がある場合、はい、単に型をbigintに変更してください。 –