SQL Server数据库中怎么利用bcp导出备份文件
SQL Server数据库中怎么利用bcp导出备份文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
/***授权*/EXECsp_configure'showadvancedoptions',1;goreconfigure;goexecsp_configure'xp_cmdshell',1;goreconfigure;go/**导入指定表的文本文件*/EXECmaster..xp_cmdshell'bcpdbname..tablenameind:\DT.txt-c-Sservername-Usa-Ppassword'execmaster..xp_cmdshell'bcp"select*fromdbname..tablename"queryout"D:\20140528.xls"-c-Sservername-Uuser-Ppassword'
xp_cmdshell参数说明
下面是我自己写的一个存储过程,可以直接拿去使用第一步,先要授权。上面有授权的SQL代码
ifexists(select*fromsysobjectswheretype='p'andname='sp_export_posm_data')begindropproceduresp_export_posm_data;end;gocreateproceduresp_export_posm_data@file_pathvarchar(200)/*导出后文件存放的路径*/asdeclare@exec_sqlvarchar(1000);declare@file_namevarchar(200);/*文件名称,时间格式,主要是用于记录数据是什么时候导出备份的*/declare@table_namevarchar(100);/*要导出数据的表名*/declare@sqlvarchar(1000);/*执行业务数据查询的sql语句*//*要备份数据的业务表名*/declarecur_tablescursorforselectnamefromsysobjectswhere1=1andtype='u'andnamelike'WM_ORDER%'ornamelike'WM_PICKING%'ornamelike'RP_%'begintryopencur_tables;fetchnextfromcur_tablesinto@table_name;while@@FETCH_STATUS=0beginset@file_name='';set@file_path='';set@sql='select*fromDHL_POSM_WS..'+@table_name;set@sql+='where1=1andDATEDIFF(MONTH,MODIFY_TIME,GETDATE())>10';print@sql;set@exec_sql='bcp"'+@sql+'"queryout';if''=@file_pathbeginset@file_path='D:\ProgramFiles(x86)\MicrosoftSQLServer\';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;--导出数据到本地文件execmaster..xp_cmdshell@exec_sql;fetchnextfromcur_tablesinto@table_name;end;closecur_tables;--关闭游标deallocatecur_tables;--释放游标endtrybegincatchclosecur_tables;--关闭游标deallocatecur_tables;--释放游标endcatch;go--执行存储过程,进行测试execsp_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'
3、导出文件中文乱码,解决方法bcp 'sql语句' queryout -c -S'IP\数据库服务实例' -U'数据库登录用户名' -P'数据库登录密码' 改成bcp 'sql语句' queryout -w -S'IP\数据库服务实例' -U'数据库登录用户名' -P'数据库登录密码'即 -c 改成 -w 就行4、导出后的文件存放目录,一定要是SQL Server数据库安装的目录,不然会出错
看完上述内容,你们掌握SQL Server数据库中怎么利用bcp导出备份文件的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。