SQL Server BCP 资料导入导出
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 资料导入导出的更多相关文章
- SQL Server数据的导入导出
SQL Server 2008的导入导出服务可以实现不同类型的数据库系统的数据转换.为了让用户可以更直观的使用导入导出服务,微软提供了导入导出向导.导入和导出向导提供了一种从源向目标复制数据的最简便的 ...
- SQL Server数据库中导入导出数据及结构时主外键关系的处理
2015-01-26 软件开发中,经常涉及到不同数据库(包括不同产品的不同版本)之间的数据结构与数据的导入导出.处理过程中会遇到很多问题,尤为突出重要的一个问题就是主从表之间,从表有外检约束,从而导致 ...
- SQL SERVER BCP导入导出
bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.bcp可以将数据库的表或视图直接导出,也能通过SELECT ...
- sqlserver中BCP命令导入导出
个人自用导出文本文件命令: bcp [xxDB].[dbo].[xx_tb_name] out d:\temp\xxx.txt -c -t "\t" -T bcp是SQL Serv ...
- sql server单表导入、导出
sql server单表导入.导出(通过CSV文件) 导出:直接打开查询分析器查询要导出表的信息(select * from 表),得到的结果全选,右键另存为 xxx.csv文件 (得到该表的所有 ...
- sql server中NULL导入decimal字段时报错
sql server中NULL导入decimal字段时报错 在导入CSV文件时,如果decimal字段为null值,导致文本文件入库时失败. 错误现象 构造例子 新建一张表,包含decimal字段. ...
- SQL Server 127个SQL server热门资料汇总
SQL Server 127个SQL server热门资料汇总 最近有许多关于如何学习SQLSERVER的问题,其实新手入门的资源和贴子很多,现在向大家隆重推荐经过精心整理的[SQLSer ...
- SQL Server BCP使用小结
原文:SQL Server BCP使用小结 用法: bcp {dbtable ) );GO--输出XML格式化文件--说明一下:-t","是指定字段分隔符,稍后我们会讲到exe ...
- sql server 2008如何导入mdf,ldf文件
sql server 2008怎样导入mdf,ldf文件 网上找了非常多解决sql server导入其它电脑拷过来的mdf文件,多数是不全.遇到的解决方法不一样等问题,下边是找到的解决这个问题的最 ...
随机推荐
- [闲来无事,从头再来][C51篇]导读
目 的: 通过学习C51,熟悉单片机,熟悉C语言,熟悉单片机系统的外部电路. 方 法: 通过看书和使用板子做实验来进行学习 参考资料: <新概念51单片机C语言教程& ...
- 使用基本 SQL 命令
概述 在本教程中,将学习结构化查询语言 (SQL),包括: 使用基本 SQL 命令 执行基本数据操做 数据库和 SQL 在本系列教程中,目前我们使用平面文本文件来存储数据.平面文本文件可能适合相对较少 ...
- VMware Integrated OpenStack (VIO)简介
VMware Integrated OpenStack是一款由VMware提供支持的OpenStack发行版软件,用于帮助IT在现有的VMware基础架构之上更加轻松地运行基于生产级OpenStack ...
- R语言图形base系统(一)
一般R作图有三大绘图系统:base系统.ggplot2绘图系统.lattice绘图系统. 本篇主要介绍base系统绘图时的图形参数.一般用plot()函数来完成.在R中,若 ...
- ubuntu防火墙
开启防火墙 sudo ufw enable 关闭防火墙 sudo ufw disable 查看防火墙状态 sudo utw status
- [原创]java WEB学习笔记02:javaWeb开发的目录结构
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Python运算和和表达式 学习笔记
光荣之路Python公开课第二讲 Python运算符和表达式. 一 Python运算符 Python运算符包括 算术运算符,赋值运算符,位运算符,逻辑运算符,身份运算符,成员运算符. 1. 算术运算符 ...
- Spring Cloud之DiscoveryClient使用
主要修改zk order的代码: package com.toov5.api.controller; import java.util.List; import org.springframework ...
- C# 多服务器上传 示例
图片服务器 带宽越来越不够用,还有当一台服务器的机房出问题的时候,不影响 整个web,以及 考虑网通电信访问服务器的 速度,所以考虑使用多台 图片 服务器 这个时候要求 图片服务器 内容是同步 的 ...
- Centos安装SZRZ方便文件传输
方便Centos服务器传输文件, 要用到szrz命令, 具体安装如下: # wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz# ta ...