当前位置: 首页 > news >正文

SQL2005 数据的导出 bcp 命令

bcp命令是SQL2005 一个实用的数据导出导入工具,我们可以运用这个命令方便的到处导入数据

 

首先我们欣赏一下bcp命令的 格式:

 

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
 
如果你看不懂  没关系 我总结了一下 如何简单的运用这个命令
SQL 2005 运用这个命令的时候 需要打开  XP_CMDSHELL 这个存储过程 ,默认情况下SQL2005 这个存储过程是关闭的,我们用SQL语句把他打开:
 
EXEC SP_CONFIGURE 'show advanced options',1;reconfigure
EXEC SP_CONFIGURE 'xp_cmdshell',1;reconfigure
 这样就可以了,这个存储过程 就打开了
 
然后 我们 执行这个命令 就ok了
EXEC   master..xp_cmdshell       'bcp         "select * from   buyV4_TEST..tb_bill_i   "  queryout    e:\12666.xls         -c                -S"XXXX"                   -U"XXXX"                -P"XXXX"'
执行      这个是用到的存储过程   这个是命令                   数据查询语句                           导出命令     导出路径和文件    转为字符char    数据库所在 服务器名称     XXXX换为数据库账号    XXXX换为密码
友情提醒:
1、如果遇到bcp主数据文件无法打开  是因为你所要导出的数据的所在盘 没有权限  这样 你需要把 这个盘符的everyone赋予他  修改权限 就可以了
导出的文件 是在数据库安装的机器上得哦
2、SQL2000 执行语句是  可能会报语法不对  提示你格式是什么一堆的  你把命令放到 一行  语法对的情况下  应该对的。
 
这样是不是就明白了啊  希望能帮助到大家
 
 

转载于:https://www.cnblogs.com/netsa/archive/2011/10/15/SQL2005.html

相关文章:

  • .NET正则基础之——正则委托
  • 微“.NET研究”软“重启”Windows Phone 7 设计的经过
  • XML各层对象的方法
  • weblogic 10.3 for redhat 5.5 install
  • SELinux进阶篇 应用目标策略管理非限制进程和用户
  • EM智能会议室预订系统
  • ASP.NET经典源代码下载地址及数据库配置方法
  • Hyper-V备份:选择Hypervisor备份还是虚拟机备份
  • 通过监控诊断和调试应用程序对共享目录访问可能的权限问题
  • 我的第五代选择器Icarus
  • 古老的话题:成本控制
  • 使用WebLogic进行应用软件开发
  • 系统集成资质培训 - 案例分析知识点复习
  • 遇到一个很诡异的问题,求解答
  • 高度图构造地形
  • CSS实用技巧干货
  • ECMAScript入门(七)--Module语法
  • Javascript设计模式学习之Observer(观察者)模式
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • STAR法则
  • webpack+react项目初体验——记录我的webpack环境配置
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 服务器之间,相同帐号,实现免密钥登录
  • 关于Flux,Vuex,Redux的思考
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 日剧·日综资源集合(建议收藏)
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 无服务器化是企业 IT 架构的未来吗?
  • 用element的upload组件实现多图片上传和压缩
  • 最简单的无缝轮播
  • linux 淘宝开源监控工具tsar
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​linux启动进程的方式
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (10)STL算法之搜索(二) 二分查找
  • (poj1.3.2)1791(构造法模拟)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)pulsar安装在独立的docker中,python测试
  • (二)WCF的Binding模型
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (七)c52学习之旅-中断
  • (七)Knockout 创建自定义绑定
  • (一)u-boot-nand.bin的下载
  • (转载)(官方)UE4--图像编程----着色器开发
  • 、写入Shellcode到注册表上线
  • .CSS-hover 的解释
  • .form文件_SSM框架文件上传篇
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记