SQL Server数据库 bcp导出备份文件应用
/**
* 授权
*/
EXEC sp_configure 'show advanced options',1;
go
reconfigure;
go
exec sp_configure 'xp_cmdshell',1;
go
reconfigure;
go
/**导入指定表的文本文件*/
EXEC master..xp_cmdshell 'bcp dbname..tablename in d:\DT.txt -c -Sservername -Usa -Ppassword'
exec master..xp_cmdshell 'bcp "select * from dbname..tablename" queryout "D:\20140528.xls"-c -Sservername -Uuser -Ppassword'
xp_cmdshell參数说明
以下是我自己写的一个存储过程,能够直接拿去使用
第一步,先要授权。上面有授权的SQL代码
if exists(select * from sysobjects where type='p' and name='sp_export_posm_data') begin
drop procedure sp_export_posm_data;
end;
go
create procedure sp_export_posm_data
@file_path varchar(200) /*导出后文件存放的路径*/
as
declare @exec_sql varchar(1000);
declare @file_name varchar(200); /*文件名,时间格式,主要是用于记录数据是什么时候导出备份的*/
declare @table_name varchar(100); /*要导出数据的表名*/
declare @sql varchar(1000); /*运行业务数据查询的sql语句*/
/*要备份数据的业务表名*/
declare cur_tables cursor for
select name from sysobjects where 1=1 and type='u'
and name like 'WM_ORDER%' or name like 'WM_PICKING%' or name like 'RP_%'
begin try
open cur_tables;
fetch next from cur_tables into @table_name;
while @@FETCH_STATUS = 0 begin
set @file_name = '';
set @file_path = '';
set @sql = 'select * from DHL_POSM_WS..'+@table_name;
set @sql += ' where 1=1 and DATEDIFF(MONTH,MODIFY_TIME,GETDATE())>10';
print @sql;
set @exec_sql = ' bcp "'+@sql+'" queryout ';
if ''=@file_path begin
set @file_path = 'D:\Program Files (x86)\Microsoft SQL Server\';
end;
print '111111';
set @file_name = @table_name+'_'+CONVERT(varchar(100), GETDATE(), 112)+'.xls';
set @file_path = @file_path + @file_name; /*文件路径*/
print '2222222';
set @exec_sql = @exec_sql +'"'+@file_path+'"';
set @exec_sql = @exec_sql +' -c -S"127.0.0.1\SQLEXPRESS" -U"DHL_POSM_WS" -P"DHLposm"';
print @exec_sql;
-- 导出数据到本地文件
exec master..xp_cmdshell @exec_sql;
fetch next from cur_tables into @table_name;
end;
close cur_tables; -- 关闭游标
deallocate cur_tables;-- 释放游标
end try
begin catch
close cur_tables; -- 关闭游标
deallocate cur_tables;-- 释放游标
end catch;
go
-- 运行存储过程。进行測试
exec sp_export_posm_data '';
注意事项:
1、查询语句的语法 select * from [数据库名]..[表名];
假设执行过程中出现了SQLState = S1000, NativeError=0这个错误。这表示是你的数据库名或表名写错了
2、bcp 'sql语句' queryout -c -S'IP\数据库服务实例' -U'数据库登录username' -P'数据库登录password'
假设执行过程中出现了SQLState = S0002, NativeError=208这个错误,则表示是你的 -S服务名写错了,
一般常写错是由于 没有加 数据库服务实例。这个能够參考你数据库的连接,照着数据库连接写就能够。
下图是我本地的数据库连接,所以我在写 -S的时候。能够两种写法:-S'127.0.0.1\SQLEXPRESS' 或者 -S'PED-VICKY-251\SQLEXPRESS'
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmlja3ljaGVuODk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
3、导出文件里文乱码。解决方法
bcp 'sql语句' queryout -c -S'IP\数据库服务实例' -U'数据库登录username' -P'数据库登录password' 改成
bcp 'sql语句' queryout -w -S'IP\数据库服务实例' -U'数据库登录username' -P'数据库登录password'
即 -c 改成 -w 即可
4、导出后的文件存放文件夹,一定要是SQL Server数据库安装的文件夹,不然会出错
SQL Server数据库 bcp导出备份文件应用的更多相关文章
- 用BCP从SQL Server 数据库中导出Excel文件
BCP(Bulk Copy Program)是一种简单高效的数据传输方式在SQL Server中,其他数据传输方式还有SSIS和DTS. 这个程序的主要功能是从数据库中查询Job中指定step的执行信 ...
- Amazon RDS 上的 Microsoft SQL Server » 导入和导出 SQL Server 数据库
导入和导出 SQL Server 数据库 Amazon RDS 支持使用完整备份文件 (.bak 文件) 对 Microsoft SQL Server 数据库进行本机备份和还原.您可以在单个便携式文件 ...
- SQL Server中bcp命令的用法以及数据批量导入导出
原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...
- SQL Server 数据库基于备份文件的【一键还原】
1. 备份与还原的基础说明 我们知道在DBA的日常工作中,SQL Server 数据库的恢复请求偶有发生,可能是用作数据的追踪,可也可能能是数据库的灾难恢复. 数据库常用的备份命令如下: ----完整 ...
- SQL Server 数据库本地备份文件通过OSS工具上阿里云(恢复还原数据库)
SQL Server数据库上云,通过备份文件上传进行恢复. 1.通过OSS工具上传备份文件. 相关知识和操作步骤请参考: https://blog.csdn.net/weixin_35773751/a ...
- SQL SERVER 数据库备份的三种策略及语句
1.全量数据备份 备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...
- 5、SQL Server数据库、T-SQL
SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...
- 从SQL Server中导入/导出Excel的基本方法(转)
从sql server中导入/导出 excel 的基本方法 /*=========== 导入/导出 excel 的基本方法 ===========*/ 从excel文档中,导入数据到sql数据库中,很 ...
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...
随机推荐
- SQLServer2008 关于数值字段列的累计
create table #temp20110610( id int identity(1,1), date varchar(8), qty float) insert int ...
- 在Winform中怎么实现图片的旋转,比如说实现仪表盘功能,看代码吧,看太不懂的欢迎问
; //旋转的角度 //Timer定时器 private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; ...
- python--3、 可迭代对象、迭代器、生成器
可迭代对象 iterable 可直接作用于for循环的对象统称为可迭代对象. 有 list. dict.tuple.set.str等数据类型,还有 generator(包括生成器和带yield的gen ...
- 努比亚(nubia) V18 NX612J 解锁BootLoader 并刷入recovery ROOT
recovery制作来自绯色玻璃 努比亚(nubia) V18 NX612J 解锁BootLoader 并刷入recovery ROOT 工具下载链接:https://pan.baidu.com/s/ ...
- Leetcode0019--Remove Nth Node From End of List 移除链表第N个结点
[转载请注明]http://www.cnblogs.com/igoslly/p/8672656.html 看一下题目: Given a linked list, remove the nth node ...
- 开源作品-PHP写的Redis管理工具(单文件绿色版)-SuRedisAdmin_PHP_1_0
前言:项目开发用到了Redis,但是在调试Redis数据的时候,没有一款通用的可视化管理工具.在网络找了一些,但是感觉功能上都不尽人意,于是决定抽出一点时间,开发一个用起来顺手的Redis管理工具.秉 ...
- 多开 MFC线程
序言:我才编程几年啊!就要处理多线程.对于只写函数的我,这难度简直了!不过MFC的多线程,貌似比较简单,还能处理的了. (1).开MFC多个线程 在视频采集的过程中,如果不使用媒体计数器,会造成主线程 ...
- 浅谈Overload和Override的区别
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Over ...
- C# 聚合数据借口发短信的使用
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- matlab学习下拉菜单Pop-Up Menu的基本用法
创建下拉菜单,修改string的属性,tag改为kj1,value值如果是1就显示第一行的sin(x),是几就显示第几行 %可以更改value值var=get(handles.kj1,'value') ...