如何使用SQL Server命令BCP 导入导出EXCEL数据
1、SQLServerBCP导入导出使用Bcp导出导入数据高效,比使用SQLServerManagementStdio提供的数据库导出导入要高效因为sqlserver也没有枞绶晷箜提供提供类似oracle的expdp和impdp的工具,如果用SQLServerManagementStdio提供的导入导出对大表数据进行迁移速度太慢了Bcp导出数据高效比较适用于大表数据的迁移进入doc命令行输入bcp命令,就弹出bcp命令的帮助信息:C:\Users\wangwei>bcp用法:bcp{dbtable|query}{in|out|queryout|format}数据文件[-m最大错误数][-f格式化文件][-e错误文件][-F首行][-L末行][-b批大小][-n本机类型][-c字符类型][-w宽字符类型][-N将非文本保持为本机类型][-V文件格式版本][-q带引号的标识符][-C代码页说明符][-t字段终止符][-r行终止符][-i输入文件][-o输出文件][-a数据包大小][-S服务器名称][-U用户名][-P密码][-T可信连接][-v版本][-R允许使用区域设置][-k保留Null值][-E保留标识值][-h"加载提示"][-x生成xml格式化文件]参数介绍:bcp共有四个动作可以选择。(1)导入。这个动作使用in命令完成,后面跟需要导入的文件名。(2)导出。这个动作使用out命令完成,后面跟需要导出的文件名。(3)使用SQL语句导出。这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。(4)导出格式文件。这个动作使用format命令完成,后而跟格式文件名。下面介绍一些常用的选项:-fformat_fileformat_file表示格式文件名。这个选项依赖于上述的动作,如果使用的是in或out,format_file表示已经存在的格式文件,如果使用的是format则表示是要生成的格式文件。-x这个选项要和-fformat_file配合使用,以便生成xml格式的格式文件。-Ffirst_row指定从被导出表的哪一行导出,或从被导入文件的哪一行导入。-Llast_row指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束。-c使用char类型做为存储类型,没有前缀且以"\t"做为字段分割符,以"\n"做为行分割符。-w和-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nchar做为存储类型。-tfield_term指定字符分割符,默认是"\t"。-rrow_term指定行分割符,默认是"\n"。-Sserver_name[\instance_name]指定要连接的SQLServer服务器的实例,如果未指定此选项,bcp连接本机的SQLServer默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可。-Ulogin_id指定连接SQLSever的用户名。-Ppassword指定连接SQLServer的用户名密码。-T指定bcp使用信任连接登录SQLServer。如果未指定-T,必须指定-U和-P。-k指定空列使用null值插入,而不是这列的默认值。使用bcp导出数据在控制台执行bcp:bcpdb_name.dbo.T_tablenameoutc:\a.txt-c-Tbcpdb_name.dbo.T_tablenameoutc:\a.txt-c-Uusername-Pxxxxx通过调用SQLServer的一个系统存储过程xp_cmdshell以SQL语句的方式运行bcp:execmaster..xp_cmdshell'bcpdb_name.dbo.T_tablenameoutc:\a.txt-c-T'--"-T"信任连接execmaster..xp_cmdshell'bcpdb_name.dbo.T_tablenameoutc:\a.txt-c-Usa-Pxxxxx'说明:-T指定bcp使用网络用户的安全凭据,通过信任连接连接到SQLServer。不需要login_id和password。如果不是使用T需要加上-U和-P参数输入用户名和密码如果是本地导入导出可以不加-S参数,如果连接到远程服务需要加-S参数bcpdb_name.dbo.tablenameoutd:\table.txt-c-q-S"120.26.76.220,1833"-U"sa"-P"password"对要导出的表进行过滤。bcp不仅可以接受表名或视图名做为参数,也可以接受SQL做为参数,通过SQL语句可以对要导出的表进行过滤,然后导出过滤后的记录。EXECmaster..xp_cmdshell'bcp"SELECTTOP20*FROMdb_name.dbo.T_tablename"queryoutc:\table2.txt-c-U"sa"-P"password"'bcp还可以通过简单地设置选项对导出的行进行限制。这条命令使用了两个参数-F2和-L16,表示从SEEXECmaster..xp_cmdshell'bcp"SELECTTOP20*FROMdb_name.dbo.T_tablename"queryoutc:\currency2.txt-F2-L16-c-U"sa"-P"password"'SELECTTOP20*FROMdb_name.dbo.T_tablename所查出来的结果中取第2条到16条记录进行导出。使用bcp导入数据bcp可以通过in命令将bcp导出的文件导入到表中,首先需要创建表结构和导出数据的表结构相同在控制台执行bcp:bcpdb_name.dbo.T_tablenameinc:\a.txt-c-Tbcpdb_name.dbo.T_tablenameinc:\a.txt-c-Uusername-Pxxxxx通过调用SQLServer的一个系统存储过程xp_cmdshell以SQL语句的方式运行bcp:execmaster..xp_cmdshell'bcpdb_name.dbo.T_tablenameinc:\a.txt-c-T'--"-T"信任连接execmaster..xp_cmdshell'bcpdb_name.dbo.T_tablenameinc:\a.txt-c-Usa-Pxxxxx'