关于Bulk insert处理疑惑
最近在用Bulk insert,有3个疑惑
BULK INSERT Northwind.dbo.[Order Details] FROM 'f:/orders/lineitem.txt'
WITH (
FIELDTERMINATOR = '|',
ROWTERMINATOR = '|/n' ,
FIRSTROW=4
)
lineitem.txt
里的数据类型是这样的
/n
sample test /n
/n
2011/11/14|222|2222|
333|222|2222|/n
2011/11/15|222|2222|
444|222|2222|/n
1:我想从lineitem.txt的第四行开始读取数据,但实际操作过程中并没有将数据插到DB里,也没有报错。这是什么原因
2:我想用begin try和begin catch 来捕捉insert产生的异常,但实际情况是当出错时并没有跑到begin catch。而是把正确的数据插入,错误的数据没被插入
3:txt里的日期是2011/11/14 这种date型,但是DB确是datetime型,这个怎么处理啊
------解决方案--------------------1、BULK INSERT Northwind.dbo.[Order Details] FROM
'f:/orders/lineitem.txt'
WITH (
FIELDTERMINATOR = '
------解决方案--------------------',
ROWTERMINATOR = '
------解决方案--------------------/n' ,
FIRSTROW=4
)把红字部分的/换成\
2、转换日期的问题,建议你插入一个临时表,然后用我文章里面的最后一部分的方法转换后再插入目标表:
http://blog.csdn.net/dba_huangzj/article/details/7657979
3、try catch怎么写要看你的写法了,而且有些错误级别如果非常低,说不定捕获不了,不过4年没编程,不是很记得了。
------解决方案--------------------1、lz设定的firstrow,是按照ROWTERMINATOR = '
------解决方案--------------------/n' 的分隔得到的第4行开始,lz这个数据无法分隔出第四行哦。 执行中没有语法错误,只是没有得到数据而已,所以没有报错。
2、同样道理,插入的数据产生的问题,并非是应用错误。 所以catch不到。只能进行逻辑判断。
3、lz这个涉及表与数据的匹配问题,这个就看lz想怎么用了,一般都是按照表设计为准。
------解决方案--------------------1:我想从lineitem.txt的第四行开始读取数据,但实际操作过程中并没有将数据插到DB里,也没有报错。这是什么原因