BCP 命令行工具

大容量数据复制工具。

bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
    {in | out | queryout | format} data_file
    [-m max_errors]
    [-f format_file]
    [-e err_file]
    [-F first_row]
    [-L last_row]
    [-b batch_size]
    [-n]
    [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
    [-q]
    [-C code_page]
    [-t field_term]
    [-r row_term]
    [-i input_file]
    [-o output_file]
    [-a packet_size]
    [-S server_name[\instance_name]]
    [-U login_id] [-P password]
    [-T]
    [-v]
    [-R]
    [-k]
    [-E]
    [-h "hint [,...n]"]

当部分参数未提供时,BCP 要求从键盘回答提问。

参数 意义
database_name 数据库
owner 所有者
table_name  表名
view_name 视图名
"query" 一条查询语句,配合 queryout 项目使用
in 表示从文件复制到数据库
out 表示从数据库复制到文件
queryout 表示把查询结果复制到文件
format 表示将创建一个格式文件,配合 -f 使用
data_file 导入或导出数据的文件名
-m max_errors 允许产生的最大错误数
-f format_file 指定格式文件位置
-e err_file 错误文件名,存储无法传输的数据
-F first_row 指定复制开始行号,默认为 1
-L last_row 指定复制最后行号,默认为 0
-b batch_size 指定所复制的每批数据中的行数
-n 使用数据的本机(数据库)数据类型执行大容量复制操作
-c 使用字符数据类型执行大容量复制操作
-w 使用 Unicode 字符执行大容量复制操作
-N 对非字符数据使用数据的本机(数据库)数据类型和对字符数据使用 Unicode 字符类型执行大容量复制操作
-V (60 | 65 | 70) 使用早期版本的数据类型执行大容量复制操作
-6 使用早期版本 6 / 6.5,建议使用 -V
-C code_page 指定每一列一个排序规则名
代码页值 描述
ACP ANSI/Microsoft Windows® (ISO 1252)。
OEM 客户程序使用的默认代码页。如果未指定 -C,则这是 bcp 使用的默认代码页。
RAW 不发生从一个代码页到另一个代码页的转换。因为不发生转换,所以这是最快的选项。
<值> 特定的代码页号码,例如 850。
-t field_term 指定字段终止符,默认为制表符
-r row_term 指定行终止符,默认为换行
-i input_file 响应文件的名称,包含对每一字段提示问题的响应
-o output_file 指定接收 bcp 输出(从命令提示重定向)的文件的名称
-a packet_size 指定发送到和发送自服务器的每个网络数据包的字节数。

4096-65536,默认为 2096

-S server_name[\instance_name] 指定要连接到的 SQL Server 实例
-U login_id 指定用于连接到 SQL Server 的登录 ID
-P password 指定登录 ID 的密码。
-T 指定 bcp 使用网络用户的安全凭据
-v 报告 bcp 实用工具的版本号和版权
-R 指定使用为客户端计算机的区域设置定义的区域格式,将货币、日期和时间数据大容量复制到 SQL Server 中
-k 指定在大容量复制操作中空列应保留一个空值,而不是对插入的列赋予默认值。
-E 指定标识列的值出现在要导入的文件中。如果没有给出 -E,则正导入的数据文件中此列的标识值将被忽略,
-h "hint[,...]" 指定在大容量复制数据到表或视图时所使用的提示。

1、将数据输出到文本文件。

下面的命令分别从 临时表、表、查询语句 中获得数据输出到文件。

bcp ##temp_authors out temp_authors.txt -c -Sservername -Usa -Ppassword
bcp pubs..titleview out titleview.txt -c -Sservername -Usa -Ppassword
bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout Authors.txt -c -Sservername -Usa -Ppassword