最近上级给了个数据迁移任务下来,迁移共5个表,每个表都有关联,查询sql语句已经写好了,大概是这样的,查找A表数据into临时表1,查找临时表1数据筛选后into临时表2,查找临时表2数据筛选后into临时表3......一种层级的像子查询的查询方式,经过N次查询后,最后5个临时表都是我需要用到的,我想查到这5个临时表的记录条数。这是第1种情况的查询方法,共有3种情况。我需要汇总,5个表在这3种情况中各自的数据总和,例如情况1的临时表10和情况2的临时表6是同一个表的,因此要汇总其记录数,5个表的汇总数作为前台显示正在迁移哪个表,多少条显示。
  还有更麻烦的是迁移时的insert语句,因此需要找到where条件,虽然说前面查找语句已经找到需要迁移的记录,但那只是临时表,而现在的系统每操作一次数据库就关闭连接,所以临时表肯定没了。但我不想把如此庞大的查询语句直接当作是where条件,所以希望有更好的办法。
  我目前只想到把临时表换成嵌套形式,不过这样就会嵌套很多个表在子查询,可能会影响效率,然后把三种情况的表整合成一个表,这样就有5个汇总表,即可以作为查找记录数的表,也可以作为条件的表。SQL数据迁移

解决方案 »

  1.   

    查找A表数据into临时表1,查找临时表1数据筛选后into临时表2,查找临时表2数据筛选后into临时表3.既然经过一次查询后,再次筛选可以进入临时表2,为什么不可以一次筛选直接进入临时表2 ?
    根据你提供的信息,临时表5都可以一次性筛选数据.这样你做数据迁移时就只需要移动原表就行了
      

  2.   

    难道不能用查询分析器吗?或者用DTS?
      

  3.   

    我不想把如此庞大的查询语句直接当作是where条件,所以希望有更好的办法。
    ----------->可以把复杂的sql语句改建为视图.现在的系统每操作一次数据库就关闭连接,所以临时表肯定没了。
    ------------>临时表改为实体表
      

  4.   

    难道不能用查询分析器吗?或者用DTS?这两个我都没用过,不过我要做得程序是面向客户的,不是程序员也能轻易进行数据迁移。
      

  5.   


    这个建议我也有考虑过,不过我觉得上级不会批准这种方法,因为目前的项目没有一个存储过程,都是用视图和在数据处理层直接写sql语句,要统一规范···
      

  6.   

    #1.简化SQL,合并临时表等查询
    #2.封装成存储过程调用。为什么不想用存储过程?如果是因为保密因素的话,可以加密存储过程;不写成存储过程也行,那就全部用SQL,只不过代码长点儿而已
    #3.效率问题,和解决方案无关。看你的SQL如何写,及你的处理逻辑是否可优化。