各位高人:
我的文本文件内容大小固定,每行20个字符,加上回车换行符共22个,记录数为45万行,我在用BULK INSERT的时候出现
BULK INSERT 发生大容量插入数据转换错误(截断)
这样的信息,不知道是什么原因,数据库字段大小为30
文件内容如下:
89057002029692416907
89057002029692515325
89057002029692619711
89057002029692717608
。。
我用BCP也没成功,搞不清楚是什么原因,寻求高人!!
谢谢!!
BCP如下:
EXEC master..xp_cmdshell 'bcp "leechdom..btemp" in "d:\45.txt" -c -q -U"sa" -P"1234"'
出现错误信息
Error = [Microsoft][ODBC SQL Server Driver]在 BCP 数据文件中遇到的意外的 EOF
谢谢!!!

解决方案 »

  1.   

    楼主设置了BATCHSIZE参数了么,是否使用默认了。换个适当的值试试。
    另外楼主的文件内容的格式也要注意 FIELDTERMINATOR 参数的设置
    最好贴出 BULK INSERT的具体代码,以及数据表的具体格式以供参考
    PS:
    BATCHSIZE = batch_size 
    指定批处理中的行数。每个批处理作为一个事务复制至服务器。如果复制操作失败,则 SQL Server 提交或回滚每个批处理的事务。默认情况下,指定数据文件中的所有数据为一个批处理。
      

  2.   

    >>Error = [Microsoft][ODBC SQL Server Driver]在 BCP 数据文件中遇到的意外的 EOF 你的文件有部分数据的分隔符可能不正确,导致了数据读取错误。
      

  3.   

    Bcp 出来的时候语法是不是一样的??如果实再找不到用DTS调出文件来预览下看看,比较大的可能 是文本不规范
      

  4.   

    首先谢谢老兄回帖,我的文本文件中只有一个固定长度为20的数字字段内容,没有任何分隔符,所以我用BCP还是不行,不过我用另外的一种方法到是可以
    select * into nbtemp from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)}; 
    DefaultDir=D:\;','select * from 45.txt') 
    只不过要加个Schema.ini文件,且和TXT文件在一个目录下,导入成功
    文件内容是
    [45.txt]
    ColNameHeader=False
    CharacterSet=ANSI
    Col1=bar Char Width 25
    这样就可以了,如果没有该文件,由于文本内容全是数字,就会导入成和EXCEL文件里显示的一样,变成科学计数法,而且第一个字段内容变成了字段名,呵呵!
    这种方法速度也是奇快,45万条记录大概10秒钟左右吧!
    缺点:无法显示导入进度,不知道该怎么加,呵呵!如果有会的,帮忙给段代码,再谢!希望各位高人再提供一些更好,更快的方法,谢谢!!