寻数据的导入导出的解决方案

chyich 2005-04-26 05:48:30
前置条件:
1)同一台机子的两个Sql Server 2000
2)不同的两个数据库
3)从一个数据库的表中导出数据(源表)到另一个数据库的两个表中(主表和从表)(目的表)
实现:
从源表导出到目的表中,目的表中主键中自增类型,从表中有主表的外键,该外键为主表中自动生成的外键.请大家提出解决方案,最好的方案是通过调度作业定时完成.
表结构如下:
1、 数据源表结构

序号 字段名 类型 属性 描述
1 SRCName Varchar(100) 网页来源名称
2 URLTitle Varchar(500) 网页引用标题
3 URLTopic Varchar(500) 从网页<title>置标解析出的标题
4 Content Text 过滤后的网页正文内容

2.目标表结构
目标表有两张表,一张是主表,另一张是从表
主表结构:

序号 字段名 类型 属性 描述
1 nContentId Numeric PK 主键,自增,唯一
2 vcTitle Varchar(2000) 非空 标题
3 vcDescript Varchar(5000) 概述
4 iCatalogId int 非空 所属栏目
5 iColumnsId int 所属专题
6 vcFrom Varchar(500) 内容来源
7 vcState Varchar(1) 非空 发布状态
8 vcSpe Varchar(1) 非空 内部查看状态
9 vcIP Varchar(50) 非空 录入者IP
10 iClickCount int 非空 点击次数
11 nAdminPK int 非空 录入者ID
12 iClickCount datetime 非空 录入时间

从表结构:

序号 字段名 类型 属性 描述
1 nContentId Numeric PK 主键,从主表中取
2 texContentValue text 非空 内容

3.导入导出对应字段

源表字段 目的表字段 说明
- nContentId 自动生成
URLTopic vcTitle
- vcDescript 固定为null
- iCatalogId 固定为23
- iColumnsId 固定为null
SRCName vcFrom
vcState 固定为0
vcSpe 固定为0
vcIP 固定为127.0.0.1
iClickCount 固定为0
nAdminPK 固定为0
iClickCount 固定为0
从表
nContentId 从主表中获得
Content texContentValue

...全文
206 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Well 2005-04-27
  • 打赏
  • 举报
回复
insert into dataname.dbo.A(a,b)
select a,b from dataname.dbo.B
具體的如何搞做樓主自己可以試一下。
我想格式就是這樣
zjcxc 元老 2005-04-27
  • 打赏
  • 举报
回复
最后在目标sql实例中,新建一个作业,定时调用上面的存储过程实现定时导入数据


企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
exec p_inport
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
zjcxc 元老 2005-04-27
  • 打赏
  • 举报
回复
--在目标sql实例中操作

--1.首先建立访问源sql实例的链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','源sql实例服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

--2.在目标数据库中创建一个存储过程,实现数据导入
create proc p_inport
as
declare tb cursor local
for
select distinct
URLTopic,SRCName
from srv_lnk.源数据库名.dbo.源表名

declare @URLTopic Varchar(500),@SRCName Varchar(100)
open tb
fetch tb into @URLTopic,@SRCName
while @@fetch_status=0
begin
insert 目标主表(
vcTitle,
vcDescript,iCatalogId,iColumnsId,
vcFrom,
vcState,vcSpe,vcIP,iClickCount,nAdminPK,iClickCount)
values(
@URLTopic,
null,23,null,
@SRCName,
0,0,'127.0.0.1',0,0,0)
insert 目标从表(
nContentId,
texContentValue)
select
scope_identity(),
Content
from srv_lnk.源数据库名.dbo.源表名
where URLTopic=@URLTopic
and SRCName=@SRCName
fetch tb into @URLTopic,@SRCName
end
close tb
deallocate tb
go
天地客人 2005-04-27
  • 打赏
  • 举报
回复
使用过程和游标吧,从源标中查出,再用游标指定,Insert 新表(...)Select ... From 源表 Where ...
chyich 2005-04-27
  • 打赏
  • 举报
回复
是不是没有说清楚?

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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