注解
使用BCP工具可以高效地以自动化的方式把测试用例数据从文本文件引入到SQL测试用例表中。特别注意,测试用例的数据文件在数据块的最后一行之后一定不能再有换行符。如果有换行符,就会被BCP解释成一个新的空行。而用于映射的格式文件在最后一行之后一定要有一个换行符。如果没有这个换行符,BCP就不会读入映射文件的最后一行。
即使文本文件的数据格式与SQL表的结果不完全吻合,也可以通过BCP工具从文本文件导入数据。换句话说,即使文本文件的数据与相应的SQL列顺序不一致或者文本文件的数据有多作的字段,仍然可以使用BCP工具来导入数据,例如:
0020,66,useless,e13
0021,77,no-need,e14
0022,88,go-away,e15
0023,99,drop-it,e16
这个文件有些额外的信息并不想将其导入,而且各个字段(caseID,expected value,unneeded data,input value)的顺序也和SQL列(caseID,input,expected)的顺序不一致。针对这个文本文件的BCP文件的格式如下:
8.0
4
1 SQLCHAR 0 4 "," 1 caseID SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 2 "," 3 excepted SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 7 "," 0 junk SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 3 "\r\n" 2 input SQL_Latin1_General_CP1_CI_AS
映射文件的第6列通过设置该列的值来指定文本文件中相应数据的插入顺序,如果该列的值设为0,则在插入数据的时候忽略这个列。
因为bcp.exe是一个命令行程序,所以可以手动运行它也可以把想要执行的命令放到一个简单的BAT文件,然后在自己的程序里调用这个BAT文件。如果想在SQL环境下使用BCP,可以通过 BULK INSERT 命令来完成。
bulk insert dbTestCasesAndResults..tblTestCases
from 'C:\somewhere\newData.dat'
with (formatfile = 'C:\somewhere\newData.fmt')
相关阅读: