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

时间:2021-10-24 12:22:34
使用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。

6 个解决方案

#1


弄个临时的表,将lastweek设置为空,导入到这个表,然后筛选不为空的导入你的目标表。

#2



bulk insert dbo.[LastWeek_2011-08-10]
from 'D:\LastWeek_2011-08-10.txt'
with
(
firstrow=1,
fieldterminator='\t',
rowterminator='\n',
maxerrors=100,
LASTROW=--指定最后的行数
)

#3


引用 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=--指定最后的行数
)

++

#4


请问二楼,文件大小大约在600~800MB,如何才能知道共多少行呢?

#5


引用 1 楼 acherat 的回复:
弄个临时的表,将lastweek设置为空,导入到这个表,然后筛选不为空的导入你的目标表。



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

#6


导入到表里,再手工删除最后一条不就行了啦

#1


弄个临时的表,将lastweek设置为空,导入到这个表,然后筛选不为空的导入你的目标表。

#2



bulk insert dbo.[LastWeek_2011-08-10]
from 'D:\LastWeek_2011-08-10.txt'
with
(
firstrow=1,
fieldterminator='\t',
rowterminator='\n',
maxerrors=100,
LASTROW=--指定最后的行数
)

#3


引用 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=--指定最后的行数
)

++

#4


请问二楼,文件大小大约在600~800MB,如何才能知道共多少行呢?

#5


引用 1 楼 acherat 的回复:
弄个临时的表,将lastweek设置为空,导入到这个表,然后筛选不为空的导入你的目标表。



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

#6


导入到表里,再手工删除最后一条不就行了啦