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文件,多数是不全.遇到的解决方法不一样等问题,下边是找到的解决这个问题的最 ...
随机推荐
- 记一次Net软件逆向的过程(经典)
查壳 1.先看下目录结构: 2.查下,是什么语言 ==> Net的,那不用说了,肯定能破解(毕竟是老本行嘛~) 混淆与反混淆 3.dnSpy打开后发现很多变量是乱码 4.用de4dot跑一波 5 ...
- 从分布式锁来看redis和zookpeer!
从分布式锁来看redis和zookpeer! 目前网上大部分的基于zookpeer,和redis的分布式锁的文章都不够全面.要么就是特意避开集群的情况,要么就是考虑不全,读者看着还是一脸迷茫.坦白说, ...
- LeetCode:存在重复元素【217】
LeetCode:存在重复元素[217] 题目描述 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 ...
- LeetCode:救生艇【881】
LeetCode:救生艇[881] 题目描述 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. ...
- Yii2 关于电子商务的开源项目
https://github.com/samdark/yii2-shop https://github.com/omnilight/yii2-shopping-cart https://github. ...
- iOS 当前应用或者浏览器中 唤起 手机其他应用
这种方法 是 产品很常见的需求,关键 是在info.plist URL types 设置对应属性 比如 里面 子属性 URL identifier 设置成 bundle id //设置应用指向 ...
- 【leetcode刷题笔记】3Sum Closest
Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...
- 【leetcode刷题笔记】Max Points on a Line
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
- poj 3083 Children of the Candy Corn 【条件约束dfs搜索 + bfs搜索】【复习搜索题目一定要看这道题目】
题目地址:http://poj.org/problem?id=3083 Sample Input 2 8 8 ######## #......# #.####.# #.####.# #.####.# ...
- Oracle数据库设计规范建议
Oracle数据库设计规范建议 1 目的 本规范的主要目的是希望规范数据库设计,尽量提前避免由于数据库设计不当而产生的麻烦:同时好的规范,在执行的时候可以培养出好的习惯,好的习惯是软件质量的很好的保证 ...