SQL Server BCP 导入导出使用

Bcp 导出导入数据高效,比使用SQL Server Management Stdio 提供的数据库导出导入要高效因为sql server 也没有提供提供类似oracle的expdp和impdp的工具,如果用SQL Server Management Stdio提供的导入导出对大表数据进行迁移速度太慢了

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命令完成,后而跟格式文件名。

下面介绍一些常用的选项:

-f format_file

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

-x

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

-F first_row

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

-L last_row

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

-c

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

-w

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

-t field_term

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

-r row_term

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

-S server_name[ \instance_name]

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

-U login_id

指定连接SQL Sever的用户名,用户名直接与参数之间不要有空格,否则会报错

如用户名:Fred, 正确的格式为:-Ufred

-P password

指定连接SQL Server的用户名密码,密码与参数之间也不要有空格。

-T

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

-k

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

使用bcp导出数据

在控制台执行bcp:

bcp db_name.dbo.T_tablename  out c:\a.txt -c -T

bcp db_name.dbo.T_tablename out c:\a.txt -c -Uusername -Pxxxxx

通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行bcp:

exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename  out c:\a.txt -c -T'    --"-T"信任连接

exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename out c:\a.txt -c -Usa -Pxxxxx'

注意:如某一参数中间有空格,请用双引号" 引起来,不是两个单引号。

说明:

-T指定 bcp 使用网络用户的安全凭据,通过信任连接连接到 SQL Server。不需要 login_id 和 password。

如果不是使用T需要加上-U和-P参数输入用户名和密码

如果是本地导入导出可以不加-S参数,如果连接到远程服务需要加-S参数

bcp db_name.dbo.tablename out d:\table.txt -c -q -S"120.26.76.220,1833" -Usa -Ppassword

对要导出的表进行过滤。

bcp不仅可以接受表名或视图名做为参数,也可以接受SQL做为参数,通过SQL语句可以对要导出的表进行过滤,然后导出过滤后的记录。

EXEC master..xp_cmdshell 'bcp "SELECT TOP 20 * FROM db_name.dbo.T_tablename" queryout c:\table2.txt -c -U"sa" -P"password"'

bcp还可以用Sql語句,將表中符合條件的資料,逐一導出至文本

--ParamValue 文本的內容
--TFileName 目標文件名
Declare @strSql varchar(200)
Declare @Wo varchar(20)
Set @Wo=''
Declare @TFileName varchar(30) Declare Cur_CreateFile Cursor Static for
SELECT TFileName FROM T_tablename Where wo=@wo
OPEN Cur_CreateFile
FETCH NEXT FROM Cur_CreateFile INTO @TFileName
WHILE @@FETCH_STATUS = 0 BEGIN set @strsql= 'bcp "select ParamValue from Nienmade.dbo.BLMO_RmClothValue Where TFileName='''+@TFileName +
'''" queryout "\\192.168.100.10\D$\My Files\#'+@TFileName+'.txt" -c -Uusername -Ppassword' EXEC master..xp_cmdshell @strsql FETCH NEXT FROM Cur_CreateFile INTO @TFileName
END
CLOSE Cur_CreateFile
DEALLOCATE Cur_CreateFile

bcp可以通过in命令将bcp导出的文件导入到表中,首先需要创建表结构和导出数据的表结构相同

在控制台执行bcp:

bcp db_name.dbo.T_tablename  in c:\a.txt-c -T

bcp db_name.dbo.T_tablename in c:\a.txt -c -Uusername -Pxxxxx

通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行bcp:

exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename  in c:\a.txt-c -T'    --"-T"信任连接

exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename in c:\a.txt -c -Usa -Pxxxxx'

SQL Server BCP 资料导入导出的更多相关文章

  1. SQL Server数据的导入导出

    SQL Server 2008的导入导出服务可以实现不同类型的数据库系统的数据转换.为了让用户可以更直观的使用导入导出服务,微软提供了导入导出向导.导入和导出向导提供了一种从源向目标复制数据的最简便的 ...

  2. SQL Server数据库中导入导出数据及结构时主外键关系的处理

    2015-01-26 软件开发中,经常涉及到不同数据库(包括不同产品的不同版本)之间的数据结构与数据的导入导出.处理过程中会遇到很多问题,尤为突出重要的一个问题就是主从表之间,从表有外检约束,从而导致 ...

  3. SQL SERVER BCP导入导出

    bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.bcp可以将数据库的表或视图直接导出,也能通过SELECT ...

  4. sqlserver中BCP命令导入导出

    个人自用导出文本文件命令: bcp [xxDB].[dbo].[xx_tb_name] out d:\temp\xxx.txt -c -t "\t" -T bcp是SQL Serv ...

  5. sql server单表导入、导出

    sql server单表导入.导出(通过CSV文件) 导出:直接打开查询分析器查询要导出表的信息(select *  from 表),得到的结果全选,右键另存为 xxx.csv文件  (得到该表的所有 ...

  6. sql server中NULL导入decimal字段时报错

    sql server中NULL导入decimal字段时报错 在导入CSV文件时,如果decimal字段为null值,导致文本文件入库时失败. 错误现象 构造例子 新建一张表,包含decimal字段. ...

  7. SQL Server 127个SQL server热门资料汇总

      SQL Server 127个SQL server热门资料汇总     最近有许多关于如何学习SQLSERVER的问题,其实新手入门的资源和贴子很多,现在向大家隆重推荐经过精心整理的[SQLSer ...

  8. SQL Server BCP使用小结

    原文:SQL Server BCP使用小结 用法: bcp {dbtable )   );GO--输出XML格式化文件--说明一下:-t","是指定字段分隔符,稍后我们会讲到exe ...

  9. sql server 2008如何导入mdf,ldf文件

    sql server 2008怎样导入mdf,ldf文件   网上找了非常多解决sql server导入其它电脑拷过来的mdf文件,多数是不全.遇到的解决方法不一样等问题,下边是找到的解决这个问题的最 ...

随机推荐

  1. linux c编程:进程控制(一)

    一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同 ...

  2. leetcode第一刷_Permutations

    生成全排列的经典问题.递归方法的典范. bool visited[10000]; void getPermutation(vector<int> &num, vector<v ...

  3. oracle decode 用法

    含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN ...

  4. redis学习笔记 - Pipeline与事务

    原文 Redis提供了5种数据结构,但除此之外,Redis还提供了注入慢查询分析,Redis Shell.Pipeline.事务.与Lua脚本.Bitmaps.HyperLogLog.PubSub.G ...

  5. 图片加载控件Fresco

    使用教程:https://www.fresco-cn.org/docs/index.html  https://github.com/facebook/fresco application初始化fre ...

  6. Stream computing

    stream data 从广义上说,所有大数据的生成均可以看作是一连串发生的离散事件.这些离散的事件以时间轴为维度进行观看就形成了一条条事件流/数据流.不同于传统的离线数据,流数据是指由数千个数据源持 ...

  7. 【leetcode刷题笔记】Permutations II

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  8. 0417 封装 property、classmethod、staricmethod

    一.封装 把一堆东西装在一个容器里 函数和属性装到了一个非全局的命名空间 class A: __N = 123 # 静态变量 def func(self): print(A.__N) # 在类的内部使 ...

  9. Hadoop 2.x简介

    Hadoop 2.0产生背景 Hadoop1.0中HDFS和MapReduce在高可用.扩展性等方面存在问题 HDFS存在的问题 NameNode单点故障,难以应用于在线场景 NameNode压力过大 ...

  10. 访问虚拟机中的架设的Web服务器

    环境: 1.虚拟机中安装了CentOS,虚拟机使用NAT的方式 2.在CentOS中安装了APACHE 并且使用 http://127.0.0.1可以正常访问,通过ifconfig查到IP地址是 19 ...