我正在尝试将数据从txt文件插入到特定的表中,并为其提供BPC xml架构。 txt文件包含很多行,出于某种原因,当达到值'2999999999'时,它会给我一个错误。我尝试使用Cast作为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>
错误是:Msg 248,Level 16,State 1,Line 1 nvarchar值'2999999999'的转换溢出了一个int列。
答案 0 :(得分:1)
对于INT,该数字太大,您需要将数据类型修改为该值的BIGINT。限制是2.3B并且改变,你在2.9B并且改变。 请参阅以下页面以供参考。
https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql