bcp命令导入导出数据
1 简介
bcp 实用工具可以在 Microsoft SQL Server实例和用户指定格式的数据文件间大容量复制数据。使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导入数据文件。除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Transact-SQL 知识。若要将数据导入表中,必须使用为该表创建的格式文件,或者必须了解表的结构以及对于该表中的列有效的数据类型。
2 语法
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-mmax_errors] [-fformat_file] [-x] [-eerr_file]
[-Ffirst_row] [-Llast_row] [-bbatch_size]
[-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 80)] [-6]
[-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term]
[-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
[-Sserver_name[\instance_name]] [-Ulogin_id] [-Ppassword]
[-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]
3 参数说明
database_name
指定的表或视图所在数据库的名称。如果不指定,则使用用户的默认数据库。
owner
表或视图所有者的名称。如果执行该操作的用户拥有指定的表或视图,则 owner 是可选的。如果未指定 owner,并且执行该操作的用户没有指定的表或视图,则 SQL Server 200
5 将返回错误消息,同时取消操作。
table_name
将数据导入 SQL Server (in) 时的目标表名称,以及将数据从 SQL Server (out) 导出时的源表名称。
view_name
将数据复制到 SQL Server (in) 时的目标视图名称,以及复制 SQL Server (out) 中的数据时的源视图名称。只有其中所有列都引用同一个表的视图才能用作目标视图。有关将数据复制到视图的限制的详细信息,请参阅 INSERT (Transact-SQL)。
" query "
一个返回结果集的 Transact-SQL 查询。如果该查询返回多个结果集(如包含 COMPUTE 子句的 SELECT 语句),则只将第一个结果集复制到数据文件,而忽略其它结果集。请将查询放在英文双引号中,将查询中嵌入的任何内容放在英文单引号中。从查询大容量复制数据时,还必须指定 queryout。
in | out | queryout | format
指定大容量复制的方向,具体如下:
∙ in 从文件复制到数据库表或视图。
注意: |
SQL Server 6.5 的 bcp 实用工具不支持向包含 sql_variant 或 bigint 数据类型的表进行大容量复制。 |
∙ out 从数据库表或视图复制到文件。提取数据时,请注意 bcp 实用工具将空字符串表示为 null,而将 null 字符串表示为空字符串。
∙ queryout 从查询中复制,仅当从查询大容量复制数据时才必须指定此选项。
∙ format 根据指定的选项(-n、-c、-w、-6 或 -N)以及表或视图的分隔符创建格式文件。大容量复制数据时,bcp 命令可以引用一个格式文件,从而避免以交互方式重复输入格式信息。format 选项要求指定 -f 选项;创建一个 XML 格式文件时还需要指定 -x 选项。有关详细信息,请参阅创建格式化文件。
data_file
数据文件的完整路径。将数据大容量导入 SQL Server 时,数据文件将包含要复制到指定表或视图的数据。从 SQL Server 大容量导出复制数据时,数据文件将包含从表或视图复制的数据。路径可以有 1 到 255 个字符。数据文件最多可包含 2,147,483,647 行。
重要提示: |
对于 format 选项,必须指定 nul 作为 data_file (format nul) 的值。 |
-m max_errors
指定取消 bcp 操作之前可能出现的语法错误的最大数目。语法错误是指将数据转换为目标数据类型时的错误。max_errors 总数不包括只能在服务器中检测到的错误,如违反约束。
无法由 bcp 实用工具复制的行将被忽略,并计为一个错误。如果不指定此选项,则默认为 10。
注意: |
-m 选项也不用于转换 money 或 bigint 数据类型。 |
-f format_file
指定一个格式文件的完整路径。该选项的含义取决于使用它的环境,具体如下:
∙ 如果 -f 与 format 选项一起使用,则将为指定的表或视图创建指定的 format_file。若要创建 XML 格式文件,请同时指定 -x 选项。有关详细信息,请参阅创建格式化文件。
∙ 如果与 in 或 out 一起使用,则应为 -f 指定一个现有的格式文件。
注意: |
与 in 或 out 选项一起使用时,格式文件是可选的。如果没有 -f 选项,则在未指定 -n、-c、-w、-6 或 -N 时,该命令将提示输入格式信息,并允许用户将回应保存在格式文件(默认名称为 Bcp.fmt)中。 |
-x
与 format 和 -f format_file 选项一起使用,可以生成基于 XML 的格式化文件,而不是默认的非 XML 格式化文件。在导入或导出数据时,-x 不起作用。如果不与 format 和 -f format_file 一起使用,则将生成错误。
注意: |
若要使用 -x 开关,则必须使用 bcp 9.0 客户端。有关如何使用 bcp 9.0 客户端的信息,请参阅本主题后面的“备注”。 |
-e err_file
指定错误文件的完整路径,此文件用于存储 bcp 无法从文件传输到数据库的所有行。bcp 命令产生的错误消息将被发送到用户的工作站。如果不使用此选项,则不会创建错误文件。
-F first_row
指定要从表中导出或从数据文件导入的第一行的编号。此参数应大于 (>) 0,小于 (<) 或等于 (=) 总行数。如果不指定此参数,则默认为文件的第一行。
-L last_row
指定要从表中导出或从数据文件导入的最后一行的编号。此参数应大于 (>) 0,小于 (<) 或等于 (=) 最后一行的编号。如果不指定该参数,则默认为文件的最后一行。
-b batch_size
指定每批导入数据的行数。每批均作为一个单独的事务进行导入并记录,在提交之前会导
入整批。默认情况下,数据文件中的所有行均作为一批导入。若要在多批之间分布行,请指定小于数据文件中行数的 batch_size。如果任何批的事务失败,则只回滚当前批中的插入。已经由已提交事务导入的批不会受到将来失败的影响。
请不要将该选项与 h"ROWS_PER_BATCH = bb" 选项一起使用。
有关详细信息,请参阅管理大容量导入的批处理。
-n
使用数据的本机(数据库)数据类型执行大容量复制操作。此选项不提示输入每个字段,它将使用本机值。
有关详细信息,请参阅使用本机格式导入或导出数据。
-c
使用字符数据类型执行该操作。此选项不提示输入每个字段;它使用 char 作为存储类型,不带前缀;使用 \t(制表符)作为字段分隔符,使用 \r\n(换行符)作为行终止符。
有关详细信息,请参阅使用字符格式导入或导出数据。
-N
执行大容量复制操作时,对非字符数据使用本机(数据库)数据类型数据,对字符数据使用 Unicode 字符。此选项是 -w 选项的一个替代选项,并具有更高的性能。该选项主要用于使用数据文件,将数据从一个 SQL Server 实例传送到另一个实例。该选项不提示输入每个字段。如果要传送包含 ANSI 扩展字符的数据,并希望利用本机模式的性能优势,则可使用此选项。-N 不能在 SQL Server 6.5 或更低版本中使用。
有关详细信息,请参阅使用 Unicode 本机格式导入或导出数据。
-w
使用 Unicode 字符执行大容量复制操作。此选项不提示输入每个字段;它使用 nchar 作为存储类型,不带前缀;使用 \t(制表符)作为字段分隔符,使用\n(换行符)作为行终止符。该选项不能在 SQL Server 6.5 或更低版本中使用。
有关详细信息,请参阅使用 Unicode 字符格式导入或导出数据。
-V ( 60| 65| 70| 80)
使用 SQL Server 早期版本中的数据类型执行大容量复制操作。此选项并不提示输入每个字段,它将使用默认值。例如,若要将随 SQL Server 6.5 提供的bcp 实用工具支持(但 ODBC 不再支持)的日期格式大容量复制到 SQL Server 2005,可使用 -V 65 参数。
重要提示: |
如果将大量数据从 SQL Server 导出到数据文件,那么即使指定了 -V,bcp 实用工具也不会为任何 datetime 或 smalldatetime 数据生成SQL Server 6.0 或 SQL Server 6.5 日期格式。日期将始终以 ODBC 格式写入。另外,由于 SQL Server 6.5 或更低版本不支持可为空的 bit 数据,因此位列中的空值将写为值 0。 |
有关详细信息,请参阅导入来自早期版本的 SQL Server 的本机格式数据和字符格式数据。
-6
使用 SQL Server 6.0 或 SQL Server 6.5 数据类型执行大容量复制操作。支持此选项仅为与较早版本兼容。对于 SQL Server 7 及更高版本,请使用 -V选项。
-q
在连接 bcp 实用工具和 SQL Server 实例时,执行 SET QUOTED_IDENTIFIERS ON 语句。使用此选项可以指定包含空格或单引号的数据库、所有者、表或视图的名称。将由三部分组成的整个表名或视图名用英文双引号 ("") 括起来。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论