社区
应用实例
帖子详情
BCP如何自动导出以日期命名的文件?
summerain
2003-10-09 11:19:02
大家好,我想用BCP大容量导出数据,每天导出一个文件。我想创建一个计划任务,以实现每天自动导出数据文件的目的,并且要求导出的文件不覆盖以前的文件,文件以日期命名。我想BCP是可以实现这个要求的,只是找不到合适的办法。请大家帮帮我,在线等!谢谢。
...全文
182
10
打赏
收藏
BCP如何自动导出以日期命名的文件?
大家好,我想用BCP大容量导出数据,每天导出一个文件。我想创建一个计划任务,以实现每天自动导出数据文件的目的,并且要求导出的文件不覆盖以前的文件,文件以日期命名。我想BCP是可以实现这个要求的,只是找不到合适的办法。请大家帮帮我,在线等!谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
txlicenhe
2003-10-09
打赏
举报
回复
create procedure test
As
declare @fn char(8),@sql varchar(500)
set @fn = convert(char(8),getdate(),112)
set @sql = 'bcp "dbname..tablename" out c:\'+ @fn + ' -c -Sservername -Usa -Ppassword'
exec master..xp_cmdshell @sql
go
再用job调用此存储过程
pengdali
2003-10-09
打赏
举报
回复
declare @a varchar(8000)
set @a='bcp test.dbo.P_Aspect out c:\test'+convert(char(8),getdate(),112)+'.txt -c -q -S"servername" -U"sa" -P""'
EXEC master..xp_cmdshell @a
summerain
2003-10-09
打赏
举报
回复
谢谢诸位。我改用宽度更大的变量,比如varchar(8000),执行结果还是不成功。另外,我采用临时表的方法比较采用查询的方法,前者导出800,0000条数据花费时间35分钟,其中将数据导入到临时表花费25分钟,BCP导出数据花费10分钟;后者(查询方式,没有where子句)BCP导出数据花费6分钟多点。由此看来采用临时表的方式不是最优选择。
zjcxc
2003-10-09
打赏
举报
回复
不是语句问题,是你的变量问题,改为下面的试试:
DECLARE @filename char(8),@sql varchar(8000),@query varchar(8000)
--将变量宽度定义大一点.
SET @filename=CONVERT(char(8),GETDATE(),112)
SET @query='SELECT * FROM db1.dbo.table1 WHERE con1<GETDATE()'
SET @sql='BCP "'+@query+'" QUERYOUT F:\'+@filename+' -U"sa" -P"sa" -n -S"DBserver"'
exec @result=master..xp_cmdshell @sql
PRINT @result
print @sql
summerain
2003-10-09
打赏
举报
回复
经检查,查询语句去掉WHERE子句就成功了。但是这样就不能实现导出部分数据的目的。where子句难道真的不能在这里使用吗?
pengdali
2003-10-09
打赏
举报
回复
你这样:
DECLARE @filename char(8),@sql varchar(255),@query varchar(255)
SET @filename=CONVERT(char(8),GETDATE(),112)
SET @query='SELECT * into ##临时表 FROM db1.dbo.table1 WHERE con1<GETDATE()'
SET @sql='bcp tempdb..##临时表 out F:\'+@filename+' -U"sa" -P"sa" -n -S"DBserver"'
exec @result=master..xp_cmdshell @sql
drop table ##临时表
PRINT @result
print @sql
pengdali
2003-10-09
打赏
举报
回复
DECLARE @filename char(8),@sql varchar(255),@query varchar(255)
SET @filename=CONVERT(char(8),GETDATE(),112)
SET @query='SELECT * FROM pubs..jobs'
SET @sql='BCP "'+@query+'" QUERYOUT c:\'+@filename+' -U"sa" -P"element" -n -S"192.168.19.189"'
exec master..xp_cmdshell @sql
--这里是好的。
txlicenhe
2003-10-09
打赏
举报
回复
/** 导出文本文件
EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'
此方式不用引号
或
EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword'
此方式要引号
txlicenhe
2003-10-09
打赏
举报
回复
create procedure test
As
declare @fn char(8),@sql varchar(500)
set @fn = convert(char(8),getdate(),112)
set @sql = 'bcp dbname..tablename out c:\'+ @fn + ' -c -Sservername -Usa -Ppassword'
exec master..xp_cmdshell @sql
go
summerain
2003-10-09
打赏
举报
回复
谢谢大力和马可。我按上述测试一遍,发现查询分析器总是输出BCP的帮助信息,并没有真正执行,但将BCP语句放到命令行方式下执行是成功的。查帮助说xp_cmdshell中的command_string不能包含一对以上的双引号。而上述中的command_string包括多个双引号,可能问题就出在这里。是不是可以不用双引号而以别的代替呢?
我的语句如下:
DECLARE @filename char(8),@sql varchar(255),@query varchar(255)
SET @filename=CONVERT(char(8),GETDATE(),112)
SET @query='SELECT * FROM db1.dbo.table1 WHERE con1<GETDATE()'
SET @sql='BCP "'+@query+'" QUERYOUT F:\'+@filename+' -U"sa" -P"sa" -n -S"DBserver"'
exec @result=master..xp_cmdshell @sql
PRINT @result
print @sql
SQL.Server.2008管理员必备指南.part2.rar(2/4)
(本书由4部分组成,需下载完4个
文件
之后,放在同一
文件
目录下才能正常解压) 基本信息 作者:(美国)(William R.Stanek)斯坦里克 译者:贾洪峰 出版社:清华大学出版社 页码:583 页 出版
日期
:2009年 ISBN:...
SQL.Server.2008管理员必备指南.part1.rar(1/4)
(本书由4部分组成,需下载完4个
文件
之后,放在同一
文件
目录下才能正常解压) 基本信息 作者:(美国)(William R.Stanek)斯坦里克 译者:贾洪峰 出版社:清华大学出版社 页码:583 页 出版
日期
:2009年 ISBN:...
SQL.Server.2008管理员必备指南.part3.rar(3/4)
(本书由4部分组成,需下载完4个
文件
之后,放在同一
文件
目录下才能正常解压) 基本信息 作者:(美国)(William R.Stanek)斯坦里克 译者:贾洪峰 出版社:清华大学出版社 页码:583 页 出版
日期
:2009年 ISBN:...
SQL.Server.2008管理员必备指南.part4.rar(4/4)
(本书由4部分组成,需下载完4个
文件
之后,放在同一
文件
目录下才能正常解压) 基本信息 作者:(美国)(William R.Stanek)斯坦里克 译者:贾洪峰 出版社:清华大学出版社 页码:583 页 出版
日期
:2009年 ISBN:...
Bcp
导出
SQL Server乱码
sp_configure 'show advanced options',1reconfiguregosp_configure 'xp_cmdshell',1reconfiguregoexec master..xp_cmdshell '
bcp
database.table out D:\xbb\table.txt -t ",,,,," -c -C65001 -T -S'
bcp
...
应用实例
27,579
社区成员
68,558
社区内容
发帖
与我相关
我的任务
应用实例
MS-SQL Server 应用实例
复制链接
扫一扫
分享
社区描述
MS-SQL Server 应用实例
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章