【TechTarget中国原创】先前的例子表明,命令首先指定了目标表。而这一次表明后面为关键字format nul,表示bcp工具应该创建格式文件。-f参数用于指定格式文件的路径和文件名称,其后为switch。最后在你运行该命令时,就生成了包括SalesPeople表架构的格式文本。
下面的数据显示上述命令生成的SalesPeople.fmt格式文本内容:
10.0 3 1 SQLCHAR 0 12 "," 1 SalesPersonID "" 2 SQLCHAR 0 100 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS 3 SQLCHAR 0 100 "\r\n" 3 LastName SQL_Latin1_General_CP1_CI_AS |
文件(10.0)第一行确定了目前使用的bcp版本。第二行(3) 确定了表中的列数,接下来的三行为列的相关信息:
* 第一个域为列在源文件中出现的顺序。
* 第二个域显示每个列的源文件数据类型。因为在生成文件时指定了–c switch,在从数据文件中提取时,所有的域都用字符型数据类型。插入数据时,SQL Server会将数据转换到正确的类型。
*第三个域表示域的前缀长度,SQL Server通常会用它来提供最紧凑的文件存储。在创建格式文件时如果你指定-c switch,那么就会自动用到0。
* 第四个域代表特殊域数据类型字节长度。
* 第五个域表明如何终止行和列。由于在创建格式文件时用了-t switch,源文件的域值就必须通过逗号终止。
* 第六个域映射这些列在SQL Server表中的排列顺序。
*第七个和最后一个域提供了SQL Server表中字符列的整理信息。
要用格式文件将数据导入SalesPeople表中,我们必须如下修改文件:
10.0 3 1 SQLCHAR 0 100 "," 3 LastName SQL_Latin1_General_CP1_CI_AS 2 SQLCHAR 0 100 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS 3 SQLCHAR 0 12 "\r\n" 1 SalesPersonID "" |
你可以看到,列的顺序已经进行了修改,这一顺序就是它们在格式文件中的排列顺序。SalesPersonID列现在排在最后,并且以\r\n结尾。LastName列现在排在开头并且以逗号结尾。
修改、保存格式文件后,准备在bcp命令中用了。下面的例子说明如何调用格式文件:
| bcp AdventureWorks.dbo.SalesPeople in C:\Data\SalesPeople.txt -f C:\Data\SalesPeople.fmt –T |
注意,你从SalesPeople.txt文件中导入数据时,还必须用到-f switch调用格式文件。还要注意到你现在已经不需要包括-t 和-c switch,因为现在在格式文件中已经包括了这些信息。
无论你用的是格式文件还是只运行基本命令,你现在都应该更好地了解到了如何使用bcp工具。记住bcp工具支持的switch比我所列举的要多得多。你可以在《SQL Server联机从书》上了解更多有关bcp工具的信息。同时,本技巧还提供了有关启用bcp工具、轻松将数据导入到SQL Server表以及导出数据到文本文件的比较充足的信息。