现在的位置: 首页 > 综合 > 正文

使用格式文件

2012年02月21日 ⁄ 综合 ⁄ 共 1801字 ⁄ 字号 评论关闭

使用格式文件

使用交互模式大容量复制数据时,bcp 实用工具会提示您存储有关存储类型、前缀长度、字段长度以及字段终止符和行终止符的信息。用来存储数据文件中每个字段的格式信息的文件称为格式文件:

Do you want to save this format information in a file? [Y/n] y
Host filename: [bcp.fmt]

尽管格式文件的默认名称为 Bcp.fmt,但也可以指定其它文件名。

当将数据文件中的数据大容量复制回 Microsoft® SQL Server™ 实例,或在其它时间从表中向外大容量复制数据时,可以使用该格式文件提供默认的信息,而不必重新指定格式。使用现有的格式文件将数据大容量复制到 SQL Server 实例或从 SQL Server 实例中向外复制数据时,bcp 不会提示输入文件存储类型、前缀长度、字段长度以及字段终止符,因为 bcp 使用已经记录的值。

将数据导入 SQL Server 实例时,若要使用以前创建的格式文件,请使用 bcp 实用工具的 -f 开关,或 BULK INSERT 语句的 FORMATFILE 子句。例如,若要使用以前创建的格式文件 (Authors.fmt) 将 New_auth.dat 数据文件中的内容大容量复制到 pubs 数据库的 authors2 表中,可以使用以下命令:

bcp pubs..authors2 in c:\new_auth.dat -fc:\authors.fmt -Sservername -Usa -Ppassword

BULK INSERT 语句可以使用 bcp 实用工具保存的格式文件。例如:

BULK INSERT pubs..authors2 FROM 'c:\new_auth.dat' 
WITH (FORMATFILE = 'c:\authors.fmt')

格式文件是具有特殊结构的以制表符分隔的文本文件。

下表描述文件格式结构。

字段 描述
版本 bcp 的版本号。
字段数目 数据文件中字段的数目。此数目必须对所有行都相同。
宿主文件字段顺序 数据文件中每个字段的位置。行中的第一个字段为 1,依此类推。
宿主文件数据类型 数据文件的特定字段中存储的数据类型。对于 ASCII 数据文件,使用 SQLCHAR;对于本机格式数据文件,使用默认的数据类型。有关更多信息,请参见文件存储类型
前缀长度 字段长度前缀字符的数目。合法的前缀长度为 0、1、2 和 4。若要避免指定长度前缀,请将其设置为 0。如果字段中包含空值,则必须指定长度前缀。有关更多信息,请参见前缀长度
宿主文件数据长度 数据文件的特定字段中所存储的数据类型的最大长度(按字节计)。有关更多信息,请参见字段长度
终止符 用来分隔数据文件中各字段的分隔符。常用的终止符为逗号 (,)、制表符 (\t) 和行结束符 (\r\n)。有关更多信息,请参见字段终止符
服务器列顺序 各列在 SQL Server 表中出现的顺序。例如,如果数据文件中的第四个字段映射为 SQL Server 表中的第六列,则第四个字段的服务器列顺序为 6。
在接收数据文件中的数据时,若要忽略表中的某个列,请将服务器列顺序值设置为 0。
服务器列名 从 SQL Server 表中获取的列名。不必使用字段的实际名称。唯一的条件就是格式文件中的该字段不为空。
排序规则 排序规则用于在大容量复制数据文件中存储字符和 Unicode 数据。

说明  如果数据文件中不存在某个字段,可通过将前缀长度、字段长度、服务器列顺序都指定为 0,并且指定无终止符,在向表中导入列时跳过该列。这种方法实际上表明数据文件中不存在该数据字段,服务器列不应装载其数据。

 

有选择地复制数据

格式文件提供了将数据文件中的数据有选择地大容量复制到 SQL Server 实例中的方法。这样,如果数据文件中的字段和表中的列之间存在不匹配时,仍允许向表中传输数据。当数据文件中的字段存在以下情况时,可以使用这种方法:

  • 数目少于表中的列数。

  • 数目多于表中的列数。
  • 与表中各列的顺序不同。

通过使用格式文件,可以将数据大容量复制到 SQL Server 实例中,而不必在数据文件中添加或删除不必要的数据或者重新排序数据文件中现有的数据。

随后的三个主题中包含有选择地复制数据的示例。为了执行随后的这些示例,需要首先在 pubs 数据库中制作 authors 表的一份复本,名为 authors2。若要制作一份 authors 表的复本,请执行以下命令:

USE pubs
GO
SELECT * INTO authors2 FROM authors
GO

抱歉!评论已关闭.