/**

 * 授权

 */

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. 第一课trie 树 POJ 2001

    最短前缀(Openjudge上抄的) 总时间限制: 1000ms 内存限制: 65536kB 描述 一个字符串的前缀是从该字符串的第一个字符起始的一个子串.例如 "carbon"的 ...

  2. A - Team

    Problem description One day three best friends Petya, Vasya and Tonya decided to form a team and tak ...

  3. 5.7 Liquibase:与具体数据库独立的追踪、管理和应用数据库Scheme变化的工具。-mybatis-generator将数据库表反向生成对应的实体类及基于mybatis的mapper接口和xml映射文件(类似代码生成器)

    一. liquibase 使用说明 功能概述:通过xml文件规范化维护数据库表结构及初始化数据. 1.配置不同环境下的数据库信息 (1)创建不同环境的数据库. (2)在resource/liquiba ...

  4. 我和CSDN的那些事

    作者:朱金灿 来源:http://blog.csdn.net/clever101 前些日子收到这样一个邀请: CSDN的工作人员还来电给我确认是否能参加.开始我有点犹豫,毕竟是在工作日的晚上,毕竟离我 ...

  5. 通过ASP.NET Ajax技术模拟实现NBA比赛文字直播功能

    文字直播是满足一些观看视频直播而条件不足的球迷所设定的比赛直播方式,例如在长途车上为了能够了解比赛的实时赛况但又限于流量和网速等问题,就出现了文字直播的方式.无论是拥有无线上网卡的笔记本电脑或者手机等 ...

  6. Tomcat 服务器中jsp页面乱码

    <Connector port="80" protocol="HTTP/1.1"               connectionTimeout=&quo ...

  7. PAT_A1111#Online Map

    Source: PAT A1111 Online Map (30 分) Description: Input our current position and a destination, an on ...

  8. 防止split没有切割的变量报错

    var getSocketUrl = localStorage.getItem("socketUrl"); getSocketUrl = getSocketUrl &&am ...

  9. 莫烦大大keras学习Mnist识别(3)-----CNN

    一.步骤: 导入模块以及读取数据 数据预处理 构建模型 编译模型 训练模型 测试 二.代码: 导入模块以及读取数据 #导包 import numpy as np np.random.seed(1337 ...

  10. 11.5 【Linq 】连接

    11.5.1 使用 join 子句的内连接 如果你打算把一个巨大的序列连接到一个极小的序列上,应尽可能把小序列作为右边序列 class Program { static void Main(strin ...