bcp 命令详解+实例
bcp 命令是 SQL Server 中的一个命令行工具,负责导入导出数据。它基于 DB-Library,能够以并行的方式高效地导入导出大批量的数据。bcp 命令可以在控制台执行,也可以通过调用 SQL Server 的一个系统存储过程xp_cmdshell,以 SQL 语句的方式运行。
bcp 命令的基本语法为:
bcp {[[database_name.][owner].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-m max_errors] [-f format_file] [-x] [-e err_file] [-F first_row] [-L last_row] [-b batch_size] [-n] [-c] [-w] [-N] [-V (60 | 65 | 70 | 80)] [-6] [-q] [-C { ACP | OEM | RAW | 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 命令有四个基本动作:
1. 导入:使用 IN 命令完成,后面跟需要导入的文件名
2. 导出:使用 OUT 命令完成,后面跟需要导出的文件名,数据源是表或者视图
3. 使用 SQL 语句导出:使用 QueryOut 命令完成,跟 OUT 类似,数据源是 SQL 语句
4. 导出格式文件:使用 Format 命令完成,后而跟格式文件名
常用的选项包括:
* -f Format_File: Format_File 表示格式文件名,这个选项依赖于上述的动作,如果使用的是 IN 或 OUT,Format_File 表示已经存在的格式文件,如果使用的是 Format 则表示是要生成的格式文件
* -x:这个选项要和-f Format_File 配合使用,以便生成 XML 格式的格式文件
* -F First_Row:指定从被导出表的哪一行导出,或从被导入文件的哪一行导入
* -L last_Row:指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束
* -c:使用 Char 类型做为存储类型,没有前缀且以"\t"做为字段分割符,以"\n"做为行分割符
* -w:和-c 类似,只是当使用 Unicode 字符集拷贝数据时使用,且以 nChar 做为存储类型
* -t Field_Term:指定字符分割符,默认是"\t"
* -r Row_Term:指定行分割符,默认是"\n"
* -S Server_Name[ \Instance_Name]:指定要连接的 SQL Server 服务器的实例,如果未指定此选项,BCP 连接本机的 SQL Server 默认实例
* -U Login_ID:指定连接 SQL Server 的用户名
* -P Password:指定连接 SQL Server 的用户名密码
* -T:指定 BCP 使用信任连接登录 SQL Server
* -k:指定空列使用 NULL 值插入,而不是这列的默认值
在实际应用中,bcp 命令可以用来导出整个表或视图,例如:
BCP NTS.dbo.T_User out c:\User.txt -c -U"sa" -P"password"
也可以用来导出 SQL 语句的目标数据,例如:
BCP "SELECT TOP 20 * FROM NTS.dbo.T_User" queryout c:\User.txt -c -U"sa"
bcp 命令是一个功能强大且灵活的工具,可以满足各种数据导入导出的需求。