SQLServer数据库bcp导出备份文件应用示例

   2015-07-11 0
核心提示:本节主要介绍了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参数说明

SQLServer数据库bcp导出备份文件应用示例

下面是我自己写的一个存储过程,可以直接拿去使用
第一步,先要授权。上面有授权的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'数据库登录用户名' -P'数据库登录密码'
如果运行过程中出现了SQLState = S0002, NativeError=208这个错误,则表示是你的 -S服务名写错了,
一般常写错是因为 没有加 数据库服务实例,这个可以参考你数据库的连接,照着数据库连接写就可以。
下图是我本地的数据库连接,所以我在写 -S的时候,可以两种写法:-S'127.0.0.1\SQLEXPRESS' 或者 -S'PED-VICKY-251\SQLEXPRESS'

SQLServer数据库bcp导出备份文件应用示例

3、导出文件中文乱码,解决方法
bcp 'sql语句' queryout -c -S'IP\数据库服务实例' -U'数据库登录用户名' -P'数据库登录密码' 改成
bcp 'sql语句' queryout -w -S'IP\数据库服务实例' -U'数据库登录用户名' -P'数据库登录密码'
即 -c 改成 -w 就行

4、导出后的文件存放目录,一定要是SQL Server数据库安装的目录,不然会出错

 
标签: 导出 备份
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 如何使用mysqldump命令导入导出数据库下的数据或表结构(远程or本地都适合)
    


            
如何正确从他人机器MySQL数据库下拷贝出.sql,再导入到自己window
    如何使用mysqldump命令导入导出数据库下的数据
        不多说,直接上干货!  https://www.cloudera.com/documentation/manager/5-1-x/Cloudera-Manager-Installation-Guide/cm5ig_mysql.html?scroll=cmig_topic_5_5      命令行下具体用法如下: mysqldump -u用户名 -p密码 -d  数据库名 表名
    02-10
  • mysql利用sql语句将查询结果导出 sql数据库查询
    如何在MySQL后台利用语句将所要执行的差选给导出呢?ql语句如下mysql -h127.0.0.1 -uroot -p123123  -e "sql查询命令" 数据库名称 1243.xls 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名脚本名; 导出整个数据库结构和数据mysql
    02-10
  • Linux 环境下 MySQ导入和导出MySQL的sql文件
    将服务器上的文件导入或导出还需要使用工具传输到本机中,推荐使用winscp,与xshell搭配使用1 导入数据库 两种方法  1、首先建空数据库mysqlcreate database abc;方法一:(1)选择数据库mysqluse abc;(2)设置数据库编码mysqlset names utf8;(3)导入数
    02-10
  • MySQL导入sql文件的三种方法小结 mysql导入导出sql文件
    MySQL导入sql文件的三种方法小结 mysql导入导出
    目录一、使用工具Navicat for MySQL导入1.打开localhost_3306,选中右击“新建数据库”2.指定数据库名和字符集(可根据sql文件的字符集类型自行选择)3.选中数据库下的表运行SQL文件4.选中路径导入二、使用官方工具MySQL Workbench导入1、第一种方法2、第二种
  • PHP实现把MySQL数据库导出为.sql文件实例(仿PH
    1. 首先要得到该数据库中有哪些表,所用函数 mysql_list_tables(),然后可以将获取的所有表名存到一个数组。----------------该函数由于被弃用   用show tables from database_name代替2. show create table 表名 可以获取表结构。3. select * from 表名 取
    02-09
  • oracle 11g 从 dmp 文件中导出 sql 代码 的方
    impdp sys/password full=y dumpfile=bg.dmp nologfile=y sqlfile=bg_dmp.sql 备注: bg.dmp 是 dmp 文件,   bg_dmp.sql 是导出来的 SQL  代码。     导出的文件和代码都存放在:oracle 安装目录:  app/oracle/admin/ORCL/dpdump 文件夹下面。  
    02-09
  • mysql导入导出.sql文件备份还原数据库[mysql导
    步骤:一.MYSQL的命令行模式的设置:桌面-我的电脑-属性-环境变量-新建-PATH=";path/mysql/bin;"  其中path为MYSQL的安装路径。二.命令行进入MYSQL的方法:1.C:\mysql -h hostname -u username -p按ENTER键,等待然后输入密码,这里hostname为服务器的名称,
    02-09
  • Oracle数据导出到MySql oracle数据导出到本地
    Oracle数据导出到MySql 1. 使用默认的结束符号导入到MySql数据库中:LOAD DATA LOCAL INFILE 'd:\oracle.txt' IGNORE INTO TABLE alarmLog 此时Fields的结束符默认的就是'\t'制表符,而不是"\t"字符串.2. 当设定Fields结束符导入到MySql数据库中:LOAD DATA LO
    02-09
  • 11、mysql导出数据库表的创建sql语句 导入mysql
    mysql导出数据库表的创建sql语句 在sql中,执行: SHOW CREATE TABLE table_name;原文:[1] http://blog.163.com/sejin@126/blog/static/827504552010101552045870/
    02-09
  • 如何正确从他人机器MySQL数据库下拷贝出.sql,再导入到自己windows下MySQL数据库(图文详解)
    


            
如何使用mysqldump命令导入导出数据库下的数
    如何正确从他人机器MySQL数据库下拷贝出.sql,
          不多说,直接上干货!        我这里,是放在桌面上。       登陆数据库   然后,mysql -uroot -p  默认是回车。    创建数据库CREATE DATABASE securityonion_db;   目的,就是为了统一。  导入数据use securityon
    02-09
点击排行