/**

 * 授权

 */

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. JDK介绍

    Java的版本最开始是1995年的JDK Alpha and Beta版本,第二年发布JDK1.0版本之后就是JDK1.1,JDK1.2.到1998年,不再叫JDK了,而是叫J2SE,但是版本号还是继 ...

  2. javascript跨域的几种方法

    以下的例子包含的文件均为为 http://www.a.com/a.html .http://www.a.com/c.html 与 http://www.b.com/b.html,要做的都是从a.htm ...

  3. Linux的那点事

    1.重启nginx服务器 注意,修改了nginx配置文件后最好先检查一下修改过的配置文件是否正确,以免重启后Nginx出现错误影响服务器稳定运行. 判断Nginx配置是否正确命令如下: nginx - ...

  4. android中复制图片

    activity_main.xml中的配置 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi ...

  5. Android 解析JSON

    上次讲了XML格式数据的解析方式,这次要说的是如何解析JSON数据格式,相对与XML,JSON解析数据的方式在于它的体积更小,在网络上传输可以更省流量. 这次在网上找到一个中国天气json数据的API ...

  6. 【PostgreSQL-9.6.3】约束

    PostgreSQL中的约束有以下五种:主键约束.外键约束.非空约束.唯一性约束.默认约束.下面分别对这五种约束作说明. 一.主键约束(PrimaryKey Constraint) 主键约束要求主键列 ...

  7. 【Oracle】redo与undo

    一 .redo(重做信息) 是Oracle在线(或归档)重做日志文件中记录的信息,万一出现失败时可以利用这些数据来“重放”(或重做)事务.Oracle中记录这些信息的文件叫做redo log file ...

  8. Net.Json 常用例子

    #JsonConvert 例子 内容主要都是官方的例子,加上一些中文注释而已. 主要方便自己查询,分享一份出来. 参考文档: https://www.newtonsoft.com/json/help/ ...

  9. Ubuntu安装中文语言包

    使用Ubuntu 默认的界面感觉不习惯,于是安装KDE界面. 1.安装kde 使用命令行: sudo apt-get install kubuntu-desktop 安装后发现不能使用中文, 在 se ...

  10. HDU_2149_基础博弈sg函数

    Public Sale Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...