博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BCP命令
阅读量:5137 次
发布时间:2019-06-13

本文共 3623 字,大约阅读时间需要 12 分钟。

bcp {[[database_name.][owner].]{table_name | view_name} | "query"}

    {in | out | queryout | format} data_file

    [-mmax_errors] [-fformat_file] [-x] [-eerr_file]

    [-Ffirst_row] [-Llast_row] [-bbatch_size]

    [-n] [-c] [-w] [-N] [-V (60 | 65 | 70 | 80)] [-6]

    [-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term]

    [-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]

    [-Sserver_name[/instance_name]] [-Ulogin_id] [-Ppassword]

    [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

----------------------------------------------------------------------------

BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据

BCP除了可以在控制台执行外,还可以通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行BCP。如:EXEC master..xp_cmdshell 'BCP NTS.dbo.T_User out c:/User.txt -c -U"sa" -P"password"'

1. 四个动作

01. 导入:这个动作使用IN命令完成,后面跟需要导入的文件名

02. 导出:这个动作使用OUT命令完成,后面跟需要导出的文件名,数据源是表或者视图

03. 使用SQL语句导出:这个动作使用QueryOut命令完成,跟OUT类似,数据源是SQL语句

04. 导出格式文件:这个动作使用Format命令完成,后而跟格式文件名

2. 常用的选项

01. -f Format_File

Format_File表示格式文件名。这个选项依赖于上述的动作,如果使用的是IN或OUT,Format_File表示已经存在的格式文件,如果使用的是Format则表示是要生成的格式文件

02. -x

这个选项要和-f Format_File配合使用,以便生成XML格式的格式文件

03. -F First_Row

指定从被导出表的哪一行导出,或从被导入文件的哪一行导入

04. -L last_Row

指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束

05. -c

使用Char类型做为存储类型,没有前缀且以"/t"做为字段分割符,以"/n"做为行分割符

06. -w

和-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nChar做为存储类型

07. -t Field_Term

指定字符分割符,默认是"/t"

08. -r Row_Term

指定行分割符,默认是"/n"

09. -S Server_Name[ /Instance_Name]

指定要连接的SQL Server服务器的实例,如果未指定此选项,BCP连接本机的SQL Server默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可

10. -U Login_ID

指定连接SQL Sever的用户名

11. -P Password

指定连接SQL Server的用户名密码

12. -T

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

13. -k

指定空列使用NULL值插入,而不是这列的默认值

3. 数据导出

01. 导出整个表或视图

BCP NTS.dbo.T_User out c:/User.txt -c -U"sa" -P"password" --使用密码连接(用户名和密码需要加上双引号)

BCP NTS.dbo.T_User out c:/User.txt -c -T --使用信任连接

02. 导出SQL语句的目标数据

BCP "SELECT TOP 20 * FROM NTS.dbo.T_User" queryout c:/User.txt -c -U"sa" -P"password"

BCP "SELECT TOP 20 * FROM NTS.dbo.T_User" queryout c:/User.txt -F 10 -L 13 -c -U"sa" -P"password" --导出第10条到13条记录

03. 导出格式文件

BCP NTS.dbo.T_User format nul -f c:/User_format1.fmt -c -T --把表结构信息导出到User_format1.fmt中

BCP NTS.dbo.T_User format nul -f c:/User_format2.fmt -x -c -T --把表结构信息导出XML中

04. 导入数据

在导入数据时可以根据已经存在的格式文件将满足条件的记录导入到数据库中,不满足则不导入。如上述的格式文件中的第三个字段的字符长度是24,如果某个文本文件中的相应字段的长度超过24,则这条记录将不被导入到数据库中,其它满足条件的记录正常导入

BCP NTS.dbo.T_User in c:/User1.txt -c -T

BCP NTS.dbo.T_User in c:/User1.txt -c -F 10 -L 13 -T --导入时也可使用-F和-L选项来选择目标数据

BCP NTS.dbo.T_User in c:/User1.txt -F 10 -L 13 -c -f c:/User_format1.fmt -T --使用普通的格式文件

BCP NTS.dbo.T_User in c:/User1.txt -F 10 -L 13 -c -x -f c:/User_format2.fmt -T --使用XML格式的格式文件

05. 实际导出的例子

EXEC master..xp_cmdshell 'BCP SZC.dbo.T_User out c:/test1.csv -c -U"sa" -P"qwert1"' --使用密码连接

EXEC master..xp_cmdshell 'BCP SZC.dbo.T_User out c:/test1.csv -c -T' --使用信任连接

4. 其他方法导入导出数据

01. 导入数据

SELECT * INTO authors1

FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=192.1.1.2; UserID=sa; Password=qwert1').pubs.dbo.authors

02. 导出数据

INSERT INTO OPENDATASOURCE('SQLOLEDB', 'Data Source=192.1.1.2; UserID=sa; Password=qwert1').test.dbo.authors

SELECT * FROM pubs.dbo.authors

INSERT INTO OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0','Text;DATABASE=c:/')[data#txt] SELECT * FROM text1

INSERT INTO OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;DATABASE=c:/', [data#txt]) SELECT * FROM text1

03. 导入Excel数据

SELECT * INTO excel FROM OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0', 'Excel 5.0;DATABASE=c:/book1.xls' )[Sheet1$]

04. 导入到Excel

INSERT INTO OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0', 'Excel 5.0;DATABASE=c:/book1.xls' )[Sheet1$] SELECT * FROM excel

转载于:https://www.cnblogs.com/tohen/archive/2012/12/22/2828896.html

你可能感兴趣的文章
ASM 图解
查看>>
Date Picker控件:
查看>>
你的第一个Django程序
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
javascript 浏览器类型检测
查看>>
nginx 不带www到www域名的重定向
查看>>
记录:Android中StackOverflow的问题
查看>>
导航,头部,CSS基础
查看>>
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>
OD使用教程20 - 调试篇20
查看>>
Java虚拟机(JVM)默认字符集详解
查看>>
Java Servlet 过滤器与 springmvc 拦截器的区别?
查看>>
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>