笔记281 BCP命令

笔记281 BCP命令

  1 BCP命令(BULK COPY PROGRAM):
  2 
  3 BCP的主要参数介绍
  4 
  5 BCP共有四个动作可以选择。
  6 (1) 导入。
  7 这个动作使用in命令完成,后面跟需要导入的文件名。
  8 (2) 导出。
  9 这个动作使用out命令完成,后面跟需要导出的文件名。
 10 (3) 使用SQL语句导出。
 11 这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。
 12 (4) 导出格式文件。
 13 这个动作使用format命令完成,后而跟格式文件名。
 14 
 15 下面介绍一些常用的选项:
 16 
 17 -f format_file
 18 format_file表示格式文件名。这个选项依赖于上述的动作,如果使用的是in或out,format_file表示已经存在的格式文件,如果使用的是format则表示是要生成的格式文件。
 19 
 20 -x
 21 这个选项要和-f format_file配合使用,以便生成xml格式的格式文件。
 22 
 23 -F first_row
 24 指定从被导出表的哪一行导出,或从被导入文件的哪一行导入。
 25 
 26 -L last_row
 27 指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束。
 28 
 29 -c
 30 使用char类型做为存储类型,没有前缀且以"\t"做为字段分割符,以"\n"做为行分割符。
 31 
 32 -w
 33-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nchar做为存储类型。
 34 
 35 -t field_term
 36 指定字符分割符,默认是"\t"。
 37 
 38 -r row_term
 39 指定行分割符,默认是"\n"。
 40 
 41 -S server_name[ \instance_name]
 42 指定要连接的SQL Server服务器的实例,如果未指定此选项,BCP连接本机的SQL Server默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可。
 43 
 44 -U login_id
 45 指定连接SQL Sever的用户名。
 46 
 47 -P password
 48 指定连接SQL Server的用户名密码。
 49 
 50 
 51 
 52 --设置字段分隔符和行分隔符(-c -t"," -r"\n"),不想输入字段类型等请配合-c一起使用
 53 -r row_term 行分隔符
 54 指定行分割符,默认是"\n"。
 55 
 56 -t field_term 
 57 指定字符分割符,默认是"\t"。
 58 
 59 bcp "select * from 数据库名.dbo.表名" queryout c:\currency.txt -S 数据库实例 -U"用户" -P"密码" -c -t"," -r"\n"
 60 EXEC master..xp_cmdshell 'bcp "select * from GPOSDB.dbo.ST_OperationLOG" queryout c:\currency.txt -S joe -U sa -P test -c -t"," -r"\n"'
 61 
 62 
 63 --在查询分析器上执行(EXEC master..xp_cmdshell)
 64 EXEC master..xp_cmdshell 'bcp "select * from 数据库名.dbo.表名" queryout c:\currency.txt -S 数据库实例 -U"用户" -P"密码" -c'
 65 
 66 EXEC master..xp_cmdshell 'bcp "select * from GPOSDB.dbo.ST_OperationLOG" queryout c:\currency.txt -S joe -U sa -P test -c'
 67 
 68 --员工加油记录 表链接
 69 exec master.. xp_cmdshell 'bcp " select * from gposdb.dbo.CT_FuelingData a inner join gposdb.dbo.CT_InhouseCard b on a.VC_FD_Cardno = b.VC_IC_CardNO " queryout d:\empfueldata.xls -c -U "sa" -P "test"'
 70 
 71 --将数据导入到currency表中
 72 T
 73 指定BCP使用信任连接登录SQL Server。如果未指定-T,必须指定-U和-P
 74 EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 in c:\currency.txt -c -T'
 75 
 76 
 77 --导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。
 78 
 79 -F first_row
 80 -L last_row
 81 所查出来的结果中取第10条到13条记录进行导出。
 82 
 83 EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 in c:\currency.txt -c -F 10 -L 13 -T'
 84 
 85 BCP还可以通过-x选项生成xml格式的格式文件。
 86 
 87 EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format2.fmt -x -c -T'
 88 
 89 
 90 --将数据导出为Excel
 91 EXEC master..xp_cmdshell 'bcp "select * from GPOSDB.dbo.ST_OperationLOG" queryout c:\currency.xls -T -c '
 92 
 93 
 94 --指定每批导入数据的行数、指定服务器发出或接收的每个网络数据包的字节数(-k -b5000 -a65535)
 95 bcp "select * from 数据库名.dbo.表名" queryout c:\currency.txt -S 数据库实例 -U"用户" -P"密码" -c -t"," -r"\n" -k -b5000 -a65535
 96 
 97 bcp transcend.dbo.AMQUOTEPRICE in "d:\AMQUOTEPRICE.txt" -c -t"|" -Usa -P -SsysbaseHQ -b5000
 98 -b5000可以指定多少行作为一个事物提交,这样能有效减少日志的大小, 其他命令详见bcp的帮助。
 99 
100 在使用命令xp_cmdshell的时候需要设置权限:
101 /*MSsql2005 如何启用xp_cmdshell
102 默认情况下,sql server2005安装完后,xp_cmdshell是禁用的(可能是安全考虑),如果要使用它,可按以下步骤
103 */
104 -- 允许配置高级选项
105 EXEC sp_configure 'show advanced options', 1
106 GO
107 -- 重新配置
108 RECONFIGURE
109 GO
110 -- 启用xp_cmdshell
111 EXEC sp_configure 'xp_cmdshell', 1
112 GO
113 --重新配置
114 RECONFIGURE
115 GO
116 
117 --执行想要的xp_cmdshell语句
118 Exec xp_cmdshell 'query user'
119 GO
120 
121 --用完后,要记得将xp_cmdshell禁用(出于安全考虑)
122 -- 允许配置高级选项
123 EXEC sp_configure 'show advanced options', 1
124 GO
125 -- 重新配置
126 RECONFIGURE
127 GO
128 -- 禁用xp_cmdshell
129 EXEC sp_configure 'xp_cmdshell', 0
130 GO
131 --重新配置
132 RECONFIGURE
133 GO

 

posted @ 2013-08-04 20:50 桦仔 阅读(...) 评论(...) 编辑 收藏