BCP 命令详解
BCP 命令是 SQL Server 中负责导入导出数据的一个命令行工具,它是基于 DB-Library 的,并且能以并行的方式高效地导入导出大批量的数据。BCP 命令可以用来将数据从 SQL Server 导出到文本文件中,也可以将数据从文本文件导入到 SQL Server 中。
BCP 命令共有四个动作可以选择:
1. 导入:这个动作使用 in 命令完成,后面跟需要导入的文件名。例如:bcp 数据库名..表名 in 数据文件名
2. 导出:这个动作使用 out 命令完成,后面跟需要导出的文件名。例如:bcp 数据库名..表名 out 数据文件名
3. 使用 SQL 语句导出:这个动作使用 queryout 命令完成,它跟 out 类似,只是数据源不是表或视图名,而是 SQL 语句。例如:bcp "select * from 数据库名..表名" queryout 数据文件名
4. 导出格式文件:这个动作使用 format 命令完成,后面跟格式文件名。例如:bcp format 数据文件名
BCP 命令常用的选项包括:
-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 Sever 的用户名。
-P password:指定连接 SQL Server 的用户名密码。
-T:指定 BCP 使用信任连接登录 SQL Server。如果未指定-T,必须指定-U 和-P。
-k:指定空列使用 null 值插入,而不是这列的默认值。
BCP 命令的使用可以分为两种方式:
一种是从本地服务器中导出 txt 文本,例如:
EXEC master..xp_cmdshell 'bcp "select * from pubs..authors" queryout "c:/DT.txt" -c -S"(local)" -U"sa" -P"1"'
一种是从远程服务器中导出 txt 文本,例如:
EXEC master..xp_cmdshell 'bcp "pubs..authors" out "c:/test.txt" -c -S"127.0.0.1" -U"sa" -P"1"'
BCP 命令是一个功能强大且灵活的数据导入导出工具,它可以满足各种数据导入导出需求。