先bcp备份表的数据,然后清空表,bcp批量导入新数据

knifewei 2009-04-14 09:49:54
有个工作,上司让写个批处理:先用bcp把192.168.1.3上的abc数据库的a,b,c,d,e,f 六个表的数据先备份到
D盘对应的1bk.txt,2bk.txt,3bk.txt,4bk.txt,5bk.txt,6bk.txt六个文件中,然后清空a,b,c,d,e,f
六个表的数据,最后在用bcp把的D盘的1.txt,2.txt,3.txt,4.txt,5.txt,6.txt六个文件的新数据导入到
a,b,c,d,e,f 六个表中,请帮帮忙。在线等!
...全文
654 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
knifewei 2009-04-14
  • 打赏
  • 举报
回复
不知道能否全到bat文件里面执行,呵呵,多谢各位帮忙!
SatSun 2009-04-14
  • 打赏
  • 举报
回复
真是个牛人
liangCK 2009-04-14
  • 打赏
  • 举报
回复
--1先生成一个文件script.sql

USE MyTest
GO

EXEC xp_cmdshell N'bcp MyTest.dbo.test out G:\test.sql -T -w -Smyfend\liangck';

PRINT '已备份文件'

TRUNCATE TABLE test;

PRINT '已经清除表';

EXEC xp_cmdshell N'bcp MyTest.dbo.test in G:\test.sql -T -w -Smyfend\liangck';

PRINT '已加载数据';

--2再生成一个文件cmd.bat

sqlcmd -E -Smyfend\liangck -i C:\script.sql

------------------

然后双击执行cmd.bat即可..

sqlcmd还可以使用变量的..
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 knifewei 的回复:]
引用 1 楼 liangCK 的回复:
SQL codeBCP abc.dbo.a OUT D:\1bk.txt -S"192.168.1.3" -T -w

-------------
TRUNCATE TABLE a;

BCP abc.dbo.a IN D:\1bk.txt -S"192.168.1.3" -T -w


直接保存为.bat能直接都运行出来吗,能不能在备份结束后提示“已经备份好,任意键继续”,任意键继续执行,
表清空后提示”表也清空,任意键继续“,任意键继续执行,最后新数据导入结束后”新数据已经导入,任意键结束“
[/Quote]

可以啊。你写成批处理文件就可以了。然后在批处理中加入你所需要的提示就可以了
knifewei 2009-04-14
  • 打赏
  • 举报
回复
有没有人帮忙解答一下啊,
knifewei 2009-04-14
  • 打赏
  • 举报
回复
想做的更加人性化一点,呵呵
knifewei 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangCK 的回复:]
SQL codeBCP abc.dbo.a OUT D:\1bk.txt -S"192.168.1.3" -T -w

-------------
TRUNCATE TABLE a;

BCP abc.dbo.a IN D:\1bk.txt -S"192.168.1.3" -T -w
[/Quote]

直接保存为.bat能直接都运行出来吗,能不能在备份结束后提示“已经备份好,任意键继续”,任意键继续执行,
表清空后提示”表也清空,任意键继续“,任意键继续执行,最后新数据导入结束后”新数据已经导入,任意键结束“
claro 2009-04-14
  • 打赏
  • 举报
回复
帮顶。
liangCK 2009-04-14
  • 打赏
  • 举报
回复
BCP abc.dbo.a OUT D:\1bk.txt -S"192.168.1.3" -T -w

-------------
TRUNCATE TABLE a;

BCP abc.dbo.a IN D:\1bk.txt -S"192.168.1.3" -T -w
knifewei 2009-04-14
  • 打赏
  • 举报
回复
解决了,呵呵,
前面用bcp先备份bcp "select * from lhw.dbo.LoginCount" queryout D:\lhw\PPMType_bk.txt -t, -r\n -c -Usa -P 中间用调用.sql脚本osql -Staodev013 -Usa -P -dppm /i"D:\lhw\444.sql"
最后再用bcp把新数据导入bcp lhw.dbo.LoginCount in D:\lhw\PPMType_bk2.txt -t, -r\n -c -Usa -P

sql脚本:delete from lhw.dbo.LoginCount (即D:\lhw\444.sql)


谢谢大家,结帖!
knifewei 2009-04-14
  • 打赏
  • 举报
回复
不知龟仙有没有良策,呵呵
knifewei 2009-04-14
  • 打赏
  • 举报
回复
我试了一下,不能执行
Teng_s2000 2009-04-14
  • 打赏
  • 举报
回复
只要bat中能找到需要的命令就行,可以设置环境变量就行或者使用完整路径!!

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧