sql复制一个数据文件至数据库表,如何丢掉最后一行

ni_123_mi 2011-08-26 12:03:41
使用Bulk insert复制数据,语句如下:
bulk insert dbo.[LastWeek_2011-08-10]
from 'D:\LastWeek_2011-08-10.txt'
with
(
firstrow=1,
fieldterminator='\t',
rowterminator='\n',
maxerrors=100
)
执行语句后出现了这种错误Bulk load: An unexpected end of file was encountered in the data file. The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error. Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".然后表中的数据为空。

查找了一下是因为文件最后一行的数据不完整,而且表LastWeek_2011-08-10中的字段都不许为空。文件最后两行数据如下:
us en cat 1 0 0
us en dog 0


现在想到一个解决办法,就是复制到表里的时候,判断最后一行是否完整,不完整就扔掉最后一行,或者不判断直接扔掉最后一行。不知可行不?该如何弄呢?请各位高手指点。

补充一下,LastWeek_2011-08-10.txt文件是由一个script脚本产生的,而且文件大小大约在600~800MB。
...全文
123 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ni_123_mi 2011-08-26
  • 打赏
  • 举报
回复
请问二楼,文件大小大约在600~800MB,如何才能知道共多少行呢?
--小F-- 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ssp2009 的回复:]
SQL code

bulk insert dbo.[LastWeek_2011-08-10]
from 'D:\LastWeek_2011-08-10.txt'
with
(
firstrow=1,
fieldterminator='\t',
rowterminator='\n',
maxerrors=100,
LASTROW=--指定最后的行数
)
[/Quote]
++
快溜 2011-08-26
  • 打赏
  • 举报
回复

bulk insert dbo.[LastWeek_2011-08-10]
from 'D:\LastWeek_2011-08-10.txt'
with
(
firstrow=1,
fieldterminator='\t',
rowterminator='\n',
maxerrors=100,
LASTROW=--指定最后的行数
)
AcHerat 2011-08-26
  • 打赏
  • 举报
回复
弄个临时的表,将lastweek设置为空,导入到这个表,然后筛选不为空的导入你的目标表。
JennySong2012 2011-08-26
  • 打赏
  • 举报
回复
导入到表里,再手工删除最后一条不就行了啦
ni_123_mi 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acherat 的回复:]
弄个临时的表,将lastweek设置为空,导入到这个表,然后筛选不为空的导入你的目标表。
[/Quote]


AcHerat,我刚才用你的方法试了一下,还是报哪个错误,主要是文件最后一行“us en dog 0”后没有任何空格,我在0后增加一个tab键,结果是成功的。但是我不能该文件,还有其他的方法吗?

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧