若是不用格式文件
而数据文件改为
1#sep#2#sep#XXX#sep#XXX#sep#XXX#sep#XXX#sep#3
19#sep#3#sep#XXX#sep#XXX#sep#XXX#sep#XXX#sep#4执行
use modelBULK INSERT model..adminX FROM 'C:\DataImport\admin.txt' 
WITH (
DATAFILETYPE = 'widechar',
FIELDTERMINATOR = '#sep#',
ROWTERMINATOR = '\n',
KEEPNULLS,
TABLOCK
)结果正常
(所影响的行数为 2 行)数据也正常越发地苦恼了....

解决方案 »

  1.   

    在我的机器上执行,除了去掉DATAFILETYPE = 'widechar'这句能完全执行正常,没有其它问题.否则提示:大容量插入: DataFileType 被错误地指定为 widechar。将假定 DataFileType 为 char,因为数据文件没有 Unicode 签名。不过还是能导入数据.
    你出现的错误:大容量插入: 在数据文件中遇到意外的文件结尾 (EOF)。我觉得是数据文件格式的问题,包括每一行没有换行回车等.还有,使用bulk insert很久个人觉得,格式文件里面的数据类型最好都用SQLCHAR,然后bulk insert到一个临时表,再用语句转换数据类型后再导入正式表,这样比较好!
      

  2.   

    frankwong(黄梓钿) 的意见
    (格式文件里面的数据类型最好都用SQLCHAR,然后bulk insert到一个临时表,再用语句转换数据类型后再导入正式表,这样比较好)是正解,在下解决了上面的问题一定这样做(特别是SQLCHAR我之前一直都没注意到的)
    但是我的数据文件格式检查过多次,现在重起一下机子
    若是可以一定马上结贴
    谢过~
      

  3.   

    frankwong(黄梓钿)
    若是您还在,请看一下,我重起了机子,错误依然,我执行的是
    use modelBULK INSERT model..adminX FROM 'C:\DataImport\admin.txt' 
    WITH (DATAFILETYPE = 'widechar',
    FIELDTERMINATOR = '#sep#',
    FORMATFILE = 'D:\DataSetReverse\DataImportRule\Format.fmt',
    ROWTERMINATOR = '\n',
    KEEPNULLS,
    TABLOCK
    )就是带格式文件的bulk insert
    错误还是
    服务器: 消息 4832,级别 16,状态 1,行 1
    大容量插入: 在数据文件中遇到意外的文件结尾 (EOF)。
    服务器: 消息 7399,级别 16,状态 1,行 1
    OLE DB 提供程序 'STREAM' 报错。提供程序未给出有关错误的任何信息。
    OLE DB 错误跟踪[OLE/DB Provider 'STREAM' IRowset::GetNextRows returned 0x80004005:  提供程序未给出有关错误的任何信息。]。
    语句已终止。
      

  4.   

    数据表脚本和格式文件、数据文件发给我试试!
    [email protected]