SQLServer BCP 导入导出数据

bcp 实用工具可以在 SQL Server 实例和用户指定格式的数据文件间大容量复制数据。使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导入数据文件。除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Transact-SQL 知识。若要将数据导入表中,必须使用为该表创建的格式文件,或者必须了解表的结构以及对于该表中的列有效的数据类型。

bcp 所有参数:

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 Sever的用户名。

-P password 
指定连接SQL Server的用户名密码。

-T 
指定BCP使用信任连接登录SQL Server。如果未指定-T,必须指定-U和-P。

-k 
指定空列使用null值插入,而不是这列的默认值。

bcp常用操作

--导出数据到tset1.txt,并指定本地数据库的用户名和密码
--这里需要注意:指定的数据库必须是完全限定名。
EXEC master..xp_cmdshell 'BCP "select * from testad.dbo.Test" queryout d:\tset1.txt -c -U"sa" -P"sasasa"'
--导出数据到tset2.xls,使用-T信任连接 --通过-F 10 -L 13 指定导出的起始行和结束行数
EXEC master..xp_cmdshell 'BCP "select * from testad.dbo.Test" queryout d:\test2.xls -c -F 10 -L 13 -T"'
--使用in语句来将数据导入到数据表EXEC master..xp_cmdshell 'BCP te.dbo.Test in D:\test2.xls -c -T'

总结

bcp非常高效,可以使用C#结合bcp来导入导出数据,非常快速。

参考:http://msdn.microsoft.com/zh-cn/library/ms162802.aspx

本文同步发布在:http://xiaogangblog.com/archives/383

转自:http://www.cnblogs.com/xiaogangqq123/archive/2011/09/30/2196727.html

学习收藏

posted @ 2012-12-11 18:00  PPDev  阅读(804)  评论(0编辑  收藏  举报