关于bulk insert的有关问题

关于bulk insert的问题
data文件
測試卡-JL001999-123456-1-2014/6/23 19:10:53-a001-2014/6/23 19:10:53
測試卡-JL001998-123456-1-2014/6/23 19:10:53-a001-2014/6/23 19:10:53
測試卡-JL001997-123456-1-2014/6/23 19:10:53-a001-2014/6/23 19:10:53

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="1" xsi:type="CharTerm" TERMINATOR="-" MAX_LENGTH="16" COLLATION="Chinese_Taiwan_Stroke_CI_AS"/>
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="-" MAX_LENGTH="24" COLLATION="Chinese_Taiwan_Stroke_CI_AS"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="-" MAX_LENGTH="10" COLLATION="Chinese_Taiwan_Stroke_CI_AS"/>
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="-" MAX_LENGTH="7"/>
    <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="-" MAX_LENGTH="24"/>
    <FIELD ID="6" xsi:type="CharTerm" TERMINATOR="-" MAX_LENGTH="16" COLLATION="Chinese_Taiwan_Stroke_CI_AS"/>
    <FIELD ID="7" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="SellCode" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="2" NAME="PolicyID" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="3" NAME="SeqNo" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="4" NAME="status" xsi:type="SQLSMALLINT"/>
    <COLUMN SOURCE="5" NAME="StockDate" xsi:type="SQLDATETIM4"/>
    <COLUMN SOURCE="6" NAME="LendUserID" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="7" NAME="ModifyDay" xsi:type="SQLDATETIM4"/>
  </ROW>
</BCPFORMAT>
数据库

关于bulk insert的有关问题

错误信息:
不允许从数据类型 smalldatetime 到 smallint 的隐式转换。请使用 CONVERT 函数来运行此查询。




------解决方案--------------------
引用:
首先,BULK INSERT的列和数据库的列不对应(列数和顺序不一样),根据MSDN使用格式化文件跳过表列 (SQL Server),你需要创建一个仅包含数据文件中列的视图
引用:
因为只有Status这个字段是SmallInt的,那先把Row节点的下面这行移除,看一看是否还是有错误,用排除法试一试

<COLUMN SOURCE="4" NAME="status" xsi:type="SQLSMALLINT"/>


拿掉之后的数据
測試卡-JL001999-123456-2014/6/24 9:02:16-a001-2014/6/24 9:02:16
測試卡-JL001998-123456-2014/6/24 9:02:16-a001-2014/6/24 9:02:16
測試卡-JL001997-123456-2014/6/24 9:02:16-a001-2014/6/24 9:02:16
xml文件已经拿掉了

错误信息:
在将 varchar 值 'a001' 转换成数据类型 smallint 时失败。