BCP 小工具用法 bcp {[[database_name.][schema].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-mmax_errors] [-fformat_file] [-x] [-eerr_file] [-Ffirst_row] [-Llast_row] [-bbatch_size] [-ddatabase_name] [-n] [-c] [-N] [-w] [-V (70 | 80 | 90 )] [-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term] [-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size] [-S [server_name[\instance_name]]] [-Ulogin_id] [-Ppassword] [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"] ---可以参考 微软官方网站 http://msdn.microsoft.com/zh-cn/library/ms162802.aspx 用法: 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 保留空值] [-E 保留标识值] [-h"加载提示"] [-x 生成xml 格式化文件] --注意: 上面的 字符 区分大小写。俺吃过这个亏,特别提醒一下。 /*WINDOWS身份 exec master..xp_cmdshell 'bcp mytest.dbo.test1 out e:\test21.xls -T -c'---导出表中的数据到指定文件中 go exec master..xp_cmdshell 'bcp mytest.dbo.test1 in e:\test21.xls -T -c'---将指定文件中的数据导入到表中 go --或者 bulk insert TESTAB from 'e:\test21.xls' ---再或者 insert into TESTAB select * from openrowset(bulk,'e:\test21.xls') go exec master..xp_cmdshell 'bcp "select top 2 TextData,NTUserName,LoginName from mytest.dbo.trace_log" queryout e:\test.xls -T -c' ----导出查询的数据到指定的文件中 */ /* ---按照SQLSERVER登录名导出表中的数据 --导出表的情况 EXEC master..xp_cmdshell 'bcp mytest.dbo.TESTAB out "e:\test11.xls" -c -S"zhaowenzhong" -U"sa" -P"123456" ' --导出查询的情况 EXEC master..xp_cmdshell 'bcp "SELECT * FROM mytest.dbo.TESTAB " queryout e:\test21.xls -c -S"zhaowenzhong" -U"sa" -P"123456" ' */ --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', 'server_name '; 'user_name '; 'pwd ',dbname.dbo.tablename) --生成local_tabname select * into local_tabname from openrowset( 'SQLOLEDB ', 'server_name '; 'user_name '; 'pwd ',dbname.dbo.tablename) --把local_tabname导入远程表 insert openrowset( 'SQLOLEDB ', 'server_name '; 'user_name '; 'pwd ',dbname.dbo.tablename) select * from local_tabname --更新local_tabname update b set b.ColumnA=a.ColumnA from openrowset( 'SQLOLEDB ', 'server_name '; 'user_name '; 'pwd ',dbname.dbo.tablename)as a inner join local_tabname b on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 exec sp_addlinkedserver 'Linked_Server_Name ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' --查询 select * FROM openquery(Linked_Server_Name, 'SELECT * FROM dbname.dbo.tablename ') go --把local_tabname导入远程表 insert openquery(Linked_Server_Name, 'SELECT * FROM dbname.dbo.tablename ') select * from local_tabname go --更新local_tabname update b set b.ColumnB=a.ColumnB FROM openquery(Linked_Server_Name, 'SELECT * FROM dbname.dbo.tablename ') as a inner join local_tabname b on a.ColumnA=b.ColumnA go --3、opendatasource/openrowset SELECT * FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=LogUser_Name;Password=pwd ' ).test.dbo.roy_ta