如何将数据大量地从一个表移到另一个表?

c1aud 2004-01-05 03:07:36
数据库中有两个表:
create table BillInterface(
UserID int,
Fee1 real,
Fee2 real,
Fee3 real )

create table Bill(
UserID int,
Fee1 real,
Fee2 real,
Fee3 real )

外部程序24小时不停地向BillInterface大量插入记录(用户消费记录)。
我有一个SQL作业,需要每小时将BillInterface当中的记录移动到Bill表当中,
如果使用 insert into bill from select * from billinterface,那么就还需要delete,但是害怕拷贝的和删除的不一致,请问SQL Server当中有没有用于移动的SQL语句?
...全文
322 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lainanxicsdn 2004-09-17
  • 打赏
  • 举报
回复
我和你情况相同!!~ 不过更惨的是 有 三个联合主键的两个表~~
我不会发帖子 还请大家帮忙!~~

两个表
TABLE1 TABLE2
DATE ID1 ID2 数据 DATE ID1 ID2 数据

其中TABLE2 是TABLE1的子表



想把TABLE1中 没有写入TABLE2的 并且 ID1 in ('4','7','8')的数据写入


azsoft 2004-01-05
  • 打赏
  • 举报
回复
1、建议用复制技术
2、用触发器同步也可以
Rotaxe 2004-01-05
  • 打赏
  • 举报
回复
使用复制可以将数据分发到不同位置,通过局域网、使用拨号连接、通过 Internet 分发给远程或移动用户。复制还能够使用户提高应用程序性能,根据数据的使用方式物理分隔数据(例如,将联机事务处理 (OLTP) 和决策支持系统分开),或者跨越多个服务器分布数据库处理。

复制的优点
根据复制的类型和选择的选项,复制提供不同的优点,但是 SQL Server 2000 复制的共同优点在于需要数据时数据随时随地的可用性。

其它的优点包括:

可在多个站点保存相同数据的复本。当多个站点需要为报表应用程序读取相同的数据或需要各个独立的服务器时,这一点十分有用。


从大量读取数据的应用程序(如联机分析处理 (OLAP) 数据库、数据集市或数据仓库)中分离 OLTP 应用程序。


允许更大的独立性。用户可以在连接断开的情况下继续使用数据的复本,然后在连接恢复时将对数据库所做的更改传播到其它数据库。


分离出要浏览的数据,如使用基于 Web 的应用程序浏览数据。


提高聚合读取性能。


拉近了数据与个人或团体的距离。这有助于减少因多个用户进行数据修改和查询而引起的冲突,因为数据可以通过网络进行分发,所以可以根据不同商业单位或用户的需求对数据进行分区。


将复制用作自定义备用服务器策略的一部分。复制是备用服务器策略的一种选择。SQL Server 2000 中的其它选择包括日志传送和故障转移群集,它们在服务器失败的情况下提供数据的复本。
何时使用复制
对于在分布式环境中使用支持多种硬件和软件应用程序的公司来说,存储冗余数据是必须的。另外,不同的应用程序对独立性和数据一致性有不同的需求。

有下列需求时,复制是分布式数据环境的一种解决方案:

将数据复制或分发至一个或多个站点。


依照调度方式分发数据复本。


将数据更改分发到其它服务器上。


允许多个用户和站点进行更改,然后将数据修改合并到一起,潜在地识别和解决冲突。


生成需要在联机或脱机环境下使用的数据应用程序。


生成用户可以浏览大量数据的 Web 应用程序。


可以有选择地在订阅站点上进行更改,这些站点透明地处于发布服务器的事务控制之下。
wanghuirui 2004-01-05
  • 打赏
  • 举报
回复
我想顺便问一个问题,如何保证两个服务器上的数据库中的表同步
如server1上的company表
server2上的company表
用户往server1上的company插数据时,server2上的company表也插入数据
bobohuang 2004-01-05
  • 打赏
  • 举报
回复
可用觸發器解決掉
還有為甚麼不直接Insert 到bill中亞.
bobohuang 2004-01-05
  • 打赏
  • 举报
回复
1.如果表很大,而且有時間字段,可增設置成getdate()
然後使用job定時一小時導入一次,將最近一小時內紀錄到入就可以了.
2.表不大可用:
insert into bill
select * from billinterface where UserID not in (select UserID from bill)
3.如果一定要用刪除紀錄可用truncate table Bill
然後,insert into bill
select * from billinterface
c1aud 2004-01-05
  • 打赏
  • 举报
回复
to 马可:我可能没有表述清楚,我现在执行的操作是:
insert into bill from select * from billinterface

delete from billinterface

但是我担心在执行完第一句之后,又有新的记录传入BillInterface表,于是这些记录就会被丢失掉,请问有什么高效率的方法解决这个问题吗?
1ssp 2004-01-05
  • 打赏
  • 举报
回复
移到我没有听说过,不过你可以使用触发器(bill)
create trigger tr1 on bill
for insert
delete from billinterface where userid in select userid from inserted
txlicenhe 2004-01-05
  • 打赏
  • 举报
回复
这样就不用删除了。

当然如果要删除,用 truncate table Bill 比用delete 快
txlicenhe 2004-01-05
  • 打赏
  • 举报
回复
insert into bill from select * from billinterface where UserID not in (select UserID from bill)
  在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 《算法导论(原书第3版)》选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在it专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。    第3版的主要变化:    新增了van emde boas树和多线程算法,并且将矩阵基础移至附录。    修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。    移除两章很少讲授的内容:二项堆和排序网络。    修订了动态规划和贪心算法相关内容。    流网络相关材料现在基于边上的全部流。    由于关于矩阵基础和strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。    修改了对knuth-morris-pratt字符串匹配算法的讨论。    新增100道练习和28道思考题,还更新并补充了参考文献。

22,209

社区成员

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

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