FTP远程数据更新

cgq214 2003-01-03 12:27:38
问题:
1: 远程c客户端从PB中导出数据存为a.txt文件,记录100000多条
2:上传到FTP
3:本地B从FTP,下载a.txt文件
4:实现a.txt文件中的数据和本地s的SQL 2000的数据更新

如果,PB中用数据窗口,可以实现,但是这样处理速度很慢,而且考虑到容错,编程就比较麻烦
看到SQL2000里可以"导入导出数据"可以实现这样的功能,就想到

问:如何在SQL2000写类似这样的存储过成:gp_input(表名,"a.txt"),实现.txt和数据库里
对应的表的数据更新,包括了容错,(可能是调用SQL2000里可以"导入导出数据"的命令).

如果可以实现的话,对FTP远程数据传输的方案就更加有意义了.望各位多多提建议,先谢过了
...全文
25 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-01-03
  • 打赏
  • 举报
回复
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout E:\boc\DT.txt -c -Sservername -Usa -Ppassword'

-----------例:

DECLARE @FileName varchar(50),
@bcpCommand varchar(2000)

SET @FileName = REPLACE('c:\authors_'+CONVERT(char(8),GETDATE(),1)+'.txt','/','-')

SET @bcpCommand = 'bcp "SELECT * FROM pubs..authors ORDER BY au_lname" queryout "'
SET @bcpCommand = @bcpCommand + @FileName + '" -U garth -P pw -c'

EXEC master..xp_cmdshell @bcpCommand
pengdali 2003-01-03
  • 打赏
  • 举报
回复
bcp 可以实现数据的导入导出。
EXEC master..xp_cmdshell 'bcp test.dbo.P_Aspect in c:\temp1.txt -c -q -S"servername" -U"sa" -P""'
//导入

EXEC master..xp_cmdshell 'bcp test.dbo.P_Aspect out c:\temp1.txt -c -q -S"servername" -U"sa" -P""'
//导出
pengdali 2003-01-03
  • 打赏
  • 举报
回复
你本地有sql吗??
CrazyFor 2003-01-03
  • 打赏
  • 举报
回复
SQL server 可以很好处理文本文件到表的数据处理,用DTS导入就可以了,当然也可以用存储过程来做,用BULK INSERT命令将数据插入表,存储过程中也可以调用DTS包。
cgq214 2003-01-03
  • 打赏
  • 举报
回复
bcp 命令没有直接支持相同主键更新的参数吗???

谢谢
CrazyFor 2003-01-03
  • 打赏
  • 举报
回复
如果你要更新主键相同的,那稍微改一下就行了,

delete from 目的表 where 主键 in (select 主键 from 临时表)

insert into 目的表
select * from 临时表

这样可以了吧。
cgq214 2003-01-03
  • 打赏
  • 举报
回复
"insert into 目的表
select * from 临时表 where 主键 not in (select 主键 from 目的表)
这样就不会有重复数据了,"

那这样的话,第2次的数据就不会更新主键相同的记录了???
CrazyFor 2003-01-03
  • 打赏
  • 举报
回复
不会变成两条的啊,怎么会变成两条,
cgq214 2003-01-03
  • 打赏
  • 举报
回复
这样的话,原来的一条记录如果传2次就变成俩条了?
就没有直接可以更新主键相同的记录吗?

谢谢
CrazyFor 2003-01-03
  • 打赏
  • 举报
回复
这个没有关系,你可以先导到临时表,
然后再insert

如:
insert into 目的表
select * from 临时表 where 主键 not in (select 主键 from 目的表)
这样就不会有重复数据了,
如果你DTS包导,可以把上面的语句加入后一个SQL任务,并指定这个任务是在DTS导入临时表操作完成后执行。
cgq214 2003-01-03
  • 打赏
  • 举报
回复
本地有SQL
cgq214 2003-01-03
  • 打赏
  • 举报
回复
问题是:
如果数据库中已经有相同的数据了,现在在a.txt包含数据可能要更新原来存在的记录。

EXEC master..xp_cmdshell 'bcp test.dbo.P_Aspect in c:\temp1.txt -c -q -S"servername" -U"sa" -P""'

我试用过,可是如果里面主键相同的话,就会INSERT错误
我现在不但要的是插入数据,还要包含UPDATE主键相同的记录

谢谢大家,继续给我出建议,我现在急用,在线等呢

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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