/**

 * 授权

 */

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导出备份文件应用的更多相关文章

  1. 用BCP从SQL Server 数据库中导出Excel文件

    BCP(Bulk Copy Program)是一种简单高效的数据传输方式在SQL Server中,其他数据传输方式还有SSIS和DTS. 这个程序的主要功能是从数据库中查询Job中指定step的执行信 ...

  2. Amazon RDS 上的 Microsoft SQL Server » 导入和导出 SQL Server 数据库

    导入和导出 SQL Server 数据库 Amazon RDS 支持使用完整备份文件 (.bak 文件) 对 Microsoft SQL Server 数据库进行本机备份和还原.您可以在单个便携式文件 ...

  3. SQL Server中bcp命令的用法以及数据批量导入导出

    原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...

  4. SQL Server 数据库基于备份文件的【一键还原】

    1. 备份与还原的基础说明 我们知道在DBA的日常工作中,SQL Server 数据库的恢复请求偶有发生,可能是用作数据的追踪,可也可能能是数据库的灾难恢复. 数据库常用的备份命令如下: ----完整 ...

  5. SQL Server 数据库本地备份文件通过OSS工具上阿里云(恢复还原数据库)

    SQL Server数据库上云,通过备份文件上传进行恢复. 1.通过OSS工具上传备份文件. 相关知识和操作步骤请参考: https://blog.csdn.net/weixin_35773751/a ...

  6. SQL SERVER 数据库备份的三种策略及语句

    1.全量数据备份    备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...

  7. 5、SQL Server数据库、T-SQL

    SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...

  8. 从SQL Server中导入/导出Excel的基本方法(转)

    从sql server中导入/导出 excel 的基本方法 /*=========== 导入/导出 excel 的基本方法 ===========*/ 从excel文档中,导入数据到sql数据库中,很 ...

  9. 不同版本的SQL Server之间数据导出导入的方法及性能比较

    原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...

随机推荐

  1. c语言中struct的初始化

    C++中的struct已经和class一样,可以用构造函数初始化. C语言中的struct怎么初始化呢? typedef struct _TEST_T {        int i;        c ...

  2. bootstrap 模态框日期控件datepicker被遮住问题的解决

    找到日期输入框,并将  .class 属性的 z-index 改大 在JSP页添加样式: 这样就OK了:

  3. springboot测试类

    Controller测试类 /** * Created by zhiqi.shao on 2017/5/12. */ @RunWith(SpringJUnit4ClassRunner.class) @ ...

  4. class path resource [processes/] cannot be resolved to URL because it does not exist

    springboot整合activiti时报以下错误,原因是项目启动时检查流程文件 nested exception is java.io.FileNotFoundException: class p ...

  5. react工具库

    采用了react框架后,需要找到一些常用的库,常见的需求比如: 1)react生成二维码 2)react的轮播banner图 随着react的社区的壮大,以上的需求都有专门的库帮我们做这个: 1)re ...

  6. 插入DOM元素

    插入Dom元素两种情况: 1.要插入的元素是从页面中获取的dom结构 ,例如:$(".item") 2.要插入的元素是通过变量存储的dom结构,例如:var html = &quo ...

  7. Apache2.2 启动和停止命令

    1.启动:net start apache2.2 2.停止:net stop apache2.2

  8. Hadoop 使用小命令(2)

    一.查看一堆文件共有多少行 查看file1/file2目录下所有文件总共多少行 hadoop fs -text file1/file2/* | wc -l 二.正则表达式 hadoop fs -tex ...

  9. Idea 类注释和方法注释

    类注释 先打开Settings > Editor > File and Code Templates Includes Includes File Header 再随机新建个类就有类注释 ...

  10. python-flask-2 安装及设定 flask

    https://linoxide.com/linux-how-to/install-flask-python-ubuntu/ 1. prerequisites > create a new us ...