BCP 基本语法
copy from:http://msdn.microsoft.com/zh-cn/library/ms162802.aspx
bcp [database_name.] schema.{table_name | view_name | "query" {in data_file | out data_file | queryout data_file | format nul}
[-a packet_size]
   [-b batch_size]
   [-c]
   [-C { ACP | OEM | RAW | code_page } ]
   [-d database_name]
   [-e err_file]
   [-E]
   [-f format_file]
   [-F first_row]
   [-h"hint [,...n]"] 
   [-i input_file]
   [-k]
   [-K application_intent]
   [-L last_row]
   [-m max_errors]
   [-n]
   [-N]
   [-o output_file]
   [-P password]
   [-q]
   [-r row_term]
   [-R]
   [-S [server_name[\instance_name]]
   [-t field_term]
   [-T]
   [-U login_id]
   [-v]
   [-V (80 | 90 | 100 )]
   [-w]
   [-x]
   /?
data_file 
数据文件的完整路径。 将数据大容量导入 SQL Server 时,数据文件将包含要复制到指定的表或视图中的数据。 从 SQL Server 中大容量导出数据时,数据文件将包含从表或视图中复制的数据。 路径可以有 1 到 255 个字符。 数据文件最多可包含 263 - 1 行。
database_name 
指定的表或视图所在数据库的名称。 如果未指定,则使用用户的默认数据库。
也可以使用 d- 显式指定数据库名称。
in data_file | outdata_file | queryoutdata_file | format nul 
指定大容量复制的方向,具体如下:
•in 从文件复制到数据库表或视图。
•out 从数据库表或视图复制到文件。 如果指定了现有文件,则该文件将被覆盖。 提取数据时,请注意 bcp 实用工具将空字符串表示为 null,而将 null 字符串表示为空字符串。
•queryout 从查询中复制,仅当从查询大容量复制数据时才必须指定此选项。
•format 根据指定的选项(-n、-c、-w 或 -N)以及表或视图的分隔符创建格式化文件。 大容量复制数据时,bcp 命令可以引用一个格式化文件,从而避免以交互方式重复输入格式信息。 format 选项要求指定 -f 选项;创建 XML 格式化文件时还需要指定 -x 选项。 有关详细信息,请参阅创建格式化文件 (SQL Server)。 您必须指定 nul 作为值 (format nul)。
owner 
表或视图的所有者的名称。 如果执行该操作的用户拥有指定的表或视图,则 owner 是可选的。 如果未指定 owner,并且执行该操作的用户不是指定的表或视图的所有者,则 SQL Server 将返回错误消息,而且该操作将取消。
" query " 
一个返回结果集的 Transact-SQL 查询。 如果该查询返回多个结果集,则只将第一个结果集复制到数据文件,而忽略其余的结果集。 将查询用双引号括起来,将查询中嵌入的任何内容用单引号括起来。 从查询大容量复制数据时,也必须指定 queryout。
只要在执行 bcp 语句之前存储过程内引用的所有表均存在,查询就可以引用该存储过程。 例如,如果存储过程生成一个临时表,则 bcp 语句便会失败,因为该临时表只在运行时可用,而在语句执行时不可用。 在这种情况下,应考虑将存储过程的结果插入表中,然后使用 bcp 将数据从表复制到数据文件中。
table_name 
将数据导入 SQL Server (in) 时为目标表名称,将数据从 SQL Server (out) 导出时为源表名称。
view_name 
将数据复制到 SQL Server (in) 时为目标视图名称,从 SQL Server (out) 中复制数据时为源视图名称。 只有其中所有列都引用同一个表的视图才能用作目标视图。 有关将数据复制到视图的限制的详细信息,请参阅 INSERT (Transact-SQL)。
-a packet_size 
指定服务器发出或接收的每个网络数据包的字节数。 可以使用 SQL Server Management Studio(或 sp_configure 系统存储过程)来设置服务器配置选项。 但是,可以使用此选项逐个替代服务器配置选项。 packet_size 的取值范围为 4096 到 65535 字节,默认为 4096 字节。
增大数据包可以提高大容量复制操作的性能。 如果无法得到请求的较大数据包,则使用默认值。 bcp 实用工具生成的性能统计信息可以显示所用的数据包大小。
-b batch_size 
指定每批导入数据的行数。 每个批次均作为一个单独的事务进行导入并记录,在提交之前会导入整批。 默认情况下,数据文件中的所有行均作为一个批次导入。 若要将行分为多个批次进行操作,请指定小于数据文件中的行数的 batch_size。 如果任何批次的事务失败,则将只回滚当前批次中的插入。 已经由已提交事务导入的批次不会受到将来失败的影响。
不要将此选项与 -h"ROWS_PER_BATCH =bb" 选项一起使用。
-c 
使用字符数据类型执行该操作。 此选项不提示输入每个字段;它使用 char 作为存储类型,不带前缀;使用 \t(制表符)作为字段分隔符,使用 \r\n(换行符)作为行终止符。 -c 与 -w 不兼容。
有关详细信息,请参阅使用字符格式导入或导出数据 (SQL Server)。
-C { ACP | OEM | RAW | code_page } 
指定该数据文件中数据的代码页。 仅当数据含有字符值大于 127 或小于 32 的 char、varchar 或 text 列时,code_page 才适用。
ACP 
 ANSI/Microsoft Windows (ISO 1252)。 
 
OEM 
 客户端使用的默认代码页。 未指定 -C 时使用的默认代码页。 
 
RAW 
 不进行代码页间的转换。 因为不进行转换,所以这是最快的选项。 
 
code_page 
 特定的代码页编号,例如 850。
-d database_name 
指定要连接到的数据库。 默认情况下,bcp.exe 连接到用户的默认数据库。 如果指定了 -ddatabase_name 和包含三部分的名称(database_name.schema.table,作为第一个参数传递给 bcp.exe),则将发生错误,因为您不能两次指定数据库名称。如果 database_name 以连字符 (-) 或正斜杠 (/) 开头,则不要在 -d 和数据库名称之间添加空格。
-e err_file 
指定错误文件的完整路径,此文件用于存储 bcp 实用工具无法从文件传输到数据库的所有行。 bcp 命令产生的错误消息将被发送到用户的工作站。 如果不使用此选项,则不会创建错误文件。
如果 err_file 以连字符 (-) 或正斜杠 (/) 开头,则不要在 -e 与 err_file 值之间包含空格。
-E 
指定导入数据文件中的标识值用于标识列。 如果未指定 -E,则将忽略所导入数据文件中此列的标识值,而且 SQL Server 将根据创建表期间指定的种子值和增量值自动分配唯一值。
如果数据文件不包含表或视图中的标识列的值,则可使用格式化文件指定,在导入数据时应跳过表或视图中的标识列;SQL Server 将自动为该列分配唯一值。 有关详细信息,请参阅 DBCC CHECKIDENT (Transact-SQL)。
-E 选项有一个特殊的权限要求。 有关详细信息,请参阅本主题后面的“备注”。
-f format_file 
指定格式化文件的完整路径。 此选项的含义取决于使用它的环境,具体如下:
•如果 -f 与 format 选项一起使用,则将为指定的表或视图创建指定的 format_file。 若要创建 XML 格式化文件,请同时指定 -x 选项。 有关详细信息,请参阅创建格式化文件 (SQL Server)。
•如果与 in 或 out 选项一起使用,则 -f 需要一个现有的格式化文件。
-F first_row 
指定要从表中导出或从数据文件导入的第一行的编号。 此参数的值应大于 (>) 0,小于 (<) 或等于 (=) 总行数。 如果未指定此参数,则默认为文件的第一行。
first_row 可以是一个最大为 2^63-1 的正整数值。 -F first_row 从 1 开始。
-h " hint[ ,...n] " 
指定向表或视图中大容量导入数据时要用到的提示。
ORDER(column[ASC | DESC] [,...n]) 
数据文件中的数据排序次序。 如果根据表中的聚集索引(如果有)对要导入的数据排序,则将提高大容量导入的性能。 如果数据文件以不同的次序(即不同于聚集索引键的次序)排序,或者表中不存在任何聚集索引,则将忽略 ORDER 子句。 提供的列名必须是目标表中有效的列名。 默认情况下,bcp 假定数据文件没有排序。 对于经过优化的大容量导入,SQL Server 还将验证导入的数据是否已排序。
ROWS_PER_BATCH =bb 
每批数据的行数(即 bb)。 在未指定 -b 时使用,这将导致整个数据文件作为单个事务发送到服务器。 服务器根据 bb 值优化大容量加载。 默认情况下,ROWS_PER_BATCH 未知。
KILOBYTES_PER_BATCH = cc 
每批数据以千字节计算的近似值(即 cc)。 默认情况下,KILOBYTES_PER_BATCH 未知。
TABLOCK 
指定在大容量加载操作期间获取大容量更新表级别的锁;否则,获取行级别的锁。 由于在大容量复制操作期间拥有锁可以减少表中的锁争夺,所以此提示可显著提高性能。 如果表没有索引并且指定了 TABLOCK,则该表可以同时由多个客户端加载。 默认情况下,锁定行为由表选项 table lock on bulk load 确定。
CHECK_CONSTRAINTS 
指定在大容量导入操作期间,必须检查针对目标表或视图的所有约束。 如果没有 CHECK_CONSTRAINTS 提示,则忽略所有 CHECK 和 FOREIGN KEY 约束;操作完成后,对表的约束将被标记为不可信。
FIRE_TRIGGERS 
与 in 参数一同指定,在目标表中定义的任何插入触发器都将在大容量复制操作期间运行。 如果未指定 FIRE_TRIGGERS,将不运行任何插入触发器。 对于 out、queryout 和 format 参数,将忽略 FIRE_TRIGGERS。
-i input_file 
指定响应文件的名称,其中包含在交互模式(未指定 -n、-c、-w 或 -N)下执行大容量复制时,对该命令要求输入每个数据字段的提示信息所作出的响应。
如果 input_file 以连字符 (-) 或正斜杠 (/) 开头,则不要在 -i 与 input_file 值之间包含空格。
-k 
指定在操作过程中空列应该保留 null 值,而不是所插入列的任何默认值。 有关详细信息,请参阅在大容量导入期间保留 Null 或使用默认值 (SQL Server)。
-K application_intent 
连接到服务器时声明应用程序工作负荷类型。 唯一可能的值是 ReadOnly。 如果未指定 -K,bcp 实用工具将不支持连接到 AlwaysOn 可用性组中的辅助副本。 有关详细信息,请参阅活动辅助副本:可读辅助副本(AlwaysOn 可用性组)。
-L last_row 
指定要从表中导出或从数据文件中导入的最后一行的编号。 此参数的值应大于 (>) 0,小于 (<) 或等于 (=) 最后一行的编号。 如果未指定此参数,则默认为文件的最后一行。
last_row 可以是一个最大为 2^63-1 的正整数值。
-m max_errors 
指定取消 bcp 操作之前可能出现的语法错误的最大数目。 语法错误是指将数据转换为目标数据类型时的错误。 max_errors 总数不包括只能在服务器中检测到的错误,如违反约束。
无法由 bcp 实用工具复制的行将被忽略,并计为一个错误。 如果未包括此选项,则默认值为 10。
-n 
使用数据的本机(数据库)数据类型执行大容量复制操作。 此选项不提示输入每个字段,它将使用本机值。
有关详细信息,请参阅使用本机格式导入或导出数据 (SQL Server)。
-N 
执行大容量复制操作时,对非字符数据使用本机(数据库)数据类型的数据,对字符数据使用 Unicode 字符。 此选项是 -w 选项的一个替代选项,并具有更高的性能。此选项主要用于通过数据文件将数据从一个 SQL Server 实例传送到另一个实例。 此选项不提示输入每个字段。 如果要传送包含 ANSI 扩展字符的数据,并希望利用本机模式的性能优势,则可使用此选项。
有关详细信息,请参阅使用 Unicode 本机格式导入或导出数据 (SQL Server)。
如果您通过将 bcp.exe 与 -N 一起使用来导出数据后又将数据导入到同一表架构中,则在存在固定长度的非 Unicode 字符列(例如 char(10))的情况下,系统可能会显示截断警告。
可忽略该警告。 解决此警告的一个方法是使用 -n 来替代 -N。
-o output_file 
指定文件名称,该文件用于接收从命令提示符重定向来的输出。
如果 output_file 以连字符 (-) 或正斜杠 (/) 开头,则不要在 -o 与 output_file 值之间包含空格。
-P password 
指定登录 ID 的密码。 如果未使用此选项,bcp 命令将提示输入密码。 如果在命令提示符的末尾使用此选项,但不提供密码,则 bcp 将使用默认密码 (NULL)。
-q 
在 bcp 实用工具和 SQL Server 实例之间的连接中,执行 SET QUOTED_IDENTIFIERS ON 语句。 使用此选项可以指定包含空格或单引号的数据库、所有者、表或视图的名称。 将由三部分组成的整个表名或视图名用英文双引号 ("") 引起来。
若要指定包含空格或单引号的数据库名称,必须使用 –q 选项。
-q 不适用于传递到 -d 的值。
有关详细信息,请参阅本主题后面的“备注”。
-r row_term 
指定行终止符。 默认的行终止符是 \n(换行符)。 使用此参数可替代默认行终止符。 有关详细信息,请参阅指定字段终止符和行终止符 (SQL Server)。
如果您在 bcp.exe 命令中以十六进制表示法指定行终止符,则该值将在 0x00 处截断。 例如,如果您指定 0x410041,则将使用 0x41。
如果 row_term 以连字符 (-) 或正斜杠 (/) 开头,则不要在 -r 与 row_term 值之间包含空格。
-R 
指定使用客户端计算机区域设置中定义的区域格式,将货币、日期和时间数据大容量复制到 SQL Server 中。 默认情况下,将忽略区域设置。
-S server_name[ \instance_name] 
指定要连接的 SQL Server 实例。 如果未指定服务器,则 bcp 实用工具将连接到本地计算机上的默认 SQL Server 实例。 如果从网络或本地命名实例上的远程计算机中运行 bcp 命令,则必须使用此选项。 若要连接到服务器上的 SQL Server 默认实例,请仅指定 server_name。 若要连接到 SQL Server 的命名实例,请指定 server_name\instance_name。
-t field_term 
指定字段终止符。 默认的字段终止符是 \t(制表符)。 使用此参数可以替代默认字段终止符。 有关详细信息,请参阅指定字段终止符和行终止符 (SQL Server)。
如果您在 bcp.exe 命令中以十六进制表示法指定字段终止符,则该值将在 0x00 处截断。 例如,如果您指定 0x410041,则将使用 0x41。
如果 field_term 以连字符 (-) 或正斜杠 (/) 开头,则不要在 -t 与 field_term 值之间包含空格。
-T 
指定 bcp 实用工具通过使用集成安全性的可信连接连接到 SQL Server。 不需要网络用户的安全凭据、login_id 和 password。 如果未指定 –T,则需要指定 –U 和 –P 才能成功登录。
-U login_id 
指定用于连接到 SQL Server 的登录 ID。
-v 
报告 bcp 实用工具的版本号和版权。
-V (80 | 90 | 100) 
使用 SQL Server 早期版本中的数据类型执行大容量复制操作。 此选项并不提示输入每个字段,它将使用默认值。
80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008 和 SQL Server 2008 R2
例如,若要为 SQL Server 2000 不支持、但是在较高版本的 SQL Server 中引入的类型生成数据,请使用 -V80 选项。
有关详细信息,请参阅导入来自早期版本的 SQL Server 的本机格式数据和字符格式数据。
-w 
使用 Unicode 字符执行大容量复制操作。 此选项不提示输入每个字段;它使用 nchar 作为存储类型,不带前缀;使用 \t(制表符)作为字段分隔符,使用 \n(换行符)作为行终止符。 -w 与 -c 不兼容。
有关详细信息,请参阅使用 Unicode 字符格式导入或导出数据 (SQL Server)。
-x 
与 format 和 -fformat_file 选项一起使用,可以生成基于 XML 的格式化文件,而不是默认的非 XML 格式化文件。 在导入或导出数据时,-x 不起作用。 如果不与 format 和 -fformat_file 一起使用,则将生成错误。
bcp 脚本失败。
字符模式 (-c) 和本机模式 (-n) 最佳做法
--------------------------------------------------------------------------------
本节提供与字符模式 (-c) 和本机模式 (-n) 有关的一些建议。
•(管理员/用户)应尽可能使用本机格式 (-n) 以避免分隔符问题。 使用本机格式可以使用 SQL Server 进行导出和导入。 如果数据将导入到非 SQL Server 数据库,则使用 -c 或 -w 选项从 SQL Server 导出数据。
•(管理员)在使用 BCP OUT 时验证数据。 例如,在您使用 BCP OUT、BCP IN,然后又使用 BCP OUT 时,请验证数据正确导出,并且终止符值未用作某个数据值的一部分。 请考虑使用随机的十六进制值覆盖默认的终止符(使用 -t 和 -r 选项),以便避免终止符值和数据值之间的冲突。
•(用户)使用长且唯一的终止符(任意字节或字符序列)可以最大程度减少与实际字符串值冲突的可能性。 这可以通过使用 -t 和 -r 选项实现。
BCP 基本语法的更多相关文章
- BCP导出导入大容量数据实践
		前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储过程,生成所需的数据文件,甚至可以生成包含SQL语句和数据的脚本文件.各有优缺点,以适用不同的需求.下面介绍大 ... 
- Sql常用语法以及名词解释
		Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ... 
- BCP
		转:(总结) SQL Server Bulk Insert 批量数据导入 DB SQL ServerBulk InsertBCPOPENROWSET格式文件 SQL Server的Bulk Inser ... 
- BCP 命令
		bcp 实用工具 我们可以通过如下BCP命令(注意不能有回车)将其导出为XML文件,并保存: BCP "SELECT TOP 30 [bom_no],[LEVEL] FROM [sqladm ... 
- sql 常用语法汇总
		Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ... 
- BCP导出导入
		BCP导出导入大容量数据实践 前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储过程,生成所需的数据文件,甚至可以生成包含SQL语句和数据的脚本文件.各有优 ... 
- SYBASE bcp用法及例子
		BCP是SYBASE公司提供专门用于数据库表一级数据备份的工具. 语法: 语法如下:(可用 bcp – 得到) 常用参数说明: -b batch_size 指定所复制的每批数据中的行数.每个批处理作为 ... 
- SQL SERVER BCP的用法
		转自:https://www.cnblogs.com/fishparadise/p/4809014.html 前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储 ... 
- SQL SERVER常用语法汇总
		阅读目录 一.SQL分类 二.基础语句 三.sql技巧 四.(MS SQL Server)SQL语句导入导出大全 回到目录 一.SQL分类 DDL—数据定义语言(CREATE,ALTER,DROP,D ... 
随机推荐
- 使用python识别验证码
			公司的登录注册等操作有验证码,测试环境可以让开发屏蔽掉验证码,但是如果到线上的话就要想办法识别验证码或必过验证码了. 识别验证码主要分为三部分,一.对验证码进行二值化.二.将二值化后的图片分割.三.进 ... 
- 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)
			要求:以左右孩子表示法实现链式方式存储的二叉树(lson—rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ... 
- (hash map)Two Sum, sorted(排序+双指针)closest,小于或大于的对数,组成不同的对数
			原版 sorted [抄题]: [思维问题]: 存sum - nums[i](补集),若出现第二次则调出 [一句话思路]: hashmap中,重要的数值当做key,角标当做value. [画图]: [ ... 
- js无刷新提交表单
			$("#form1").attr("target", "frameFile"); $("#form1").submit( ... 
- 自动化部署nginx负载均衡及监控短信报警
			题: 开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: 要求: I.部署nginx反向代理三个web服务,调度算法使用加权轮询: II.所有web服务使用共享存储nfs,保证所有 ... 
- Linux系统 SecureCRT SecureFX 注册破解方法
			1.创建脚本文件crack-binary.sh,内容如下: #!/bin/sh cd $1 cat SecureCRT | od -A n -v -t x1 | tr -d ' \n ... 
- BZOJ 1430 小猴打架 - prufer数列
			描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过$N-1$次打架之后,整个森林的小猴都会成 ... 
- Java 8 新日期时间 API
			Java 8 新日期时间 API 1. LocalDate.LocalTime.LocalDateTime LocalDate.LocalTime.LocalDateTime 实例是不可变的对象,分别 ... 
- Socket使用大全
			第一部分.概念的理解 1.什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法.它的实质并不是一种协议,没有规定计算机应当怎么样传递消息,只是给程序员提供了一个发送消息 ... 
- Django介绍(2)
			https://www.cnblogs.com/yuanchenqi/articles/5658455.html 
