我觉得编程的话工作量非常大,而且除非你对自己的技术很有自信,否则还是用一些第三方软件吧。比如red-gate,SQLDelta,SQLDeveloperBundle,apexsql这几种

解决方案 »

  1.   


    你是说写sql的工作量大吗?
    那么还是用程序来实现这个工作吧,毕竟我自己写程序比写sql要容易的多你说的第三方软件是用来sql编程的吗?
      

  2.   

    主要工作量在sql方面,那些工具用来管理数据库的。而且图形化的话操作起来方便很多
      

  3.   

    不知道是不是我理解问题,不就是把数据从一张表复制到另一张表吗?需要很大工程吗?
    需要修改的只是程序读取附加的地方吧
    2005以上可以类似这样操作select * into #t from(
    select 'x' a,'1,2'b
    union all
    select 'y','1'
    union all
    select 'z','1,2,3'
    )a
    select * from #tselect a.Col1,b.Col2  
    from (
    select a as Col1,convert(xml,'<row><b>'+rtrim(replace(b,',','</b><b>'))+'</b></row>') as Col2 from #t)a
    outer apply (select Col2=C.v.value('.','nvarchar(100)') from a.COl2.nodes('/row/b')C(v))b /*
    a    b
    ---- -----
    x    1,2
    y    1
    z    1,2,3(3 行受影响)Col1 Col2
    ---- -------
    x    1
    x    2
    y    1
    z    1
    z    2
    z    3(6 行受影响)
    */
    至于效率就得看你扩展功能后,需要添加什么属性,需要如何查询,视情况来添加相应的索引
      

  4.   

    一个表当然容易,但是整库的话,那就不是这样说了,除了表名之外,表的依赖关系,是否用到非聚集索引的主键?sp、view的同步修改、权限、架构、文件分布,还有一些可能未知的一连窜连锁反应,不是一句话就可以实现。之前有个同事问我会不会数据库迁移,具体事项没说,也说已经过了时间,只是问我会不会,他们那边开价2天完成,报酬4万,你以为别人真的土豪啊
      

  5.   

    是这样吗:
    declare @tb table(a varchar(20),b varchar(30))
    insert into @tb
    select 'x' a,'1,2' b
    union all
    select 'y','1'
    union all
    select 'z','1,2,3'select a,
           --b,
           SUBSTRING(t.b, number ,CHARINDEX(',',t.b+',',number)-number) as split
    from @tb t,master..spt_values s
    where s.number >=1
          and s.type = 'P'
          and SUBSTRING(','+t.b,s.number,1) = ','
    /*
    a   split
    x 1
    x 2
    y 1
    z 1
    z 2
    z 3
    */
      

  6.   


    CREATE TABLE [dbo].[news](
        [newsid] [int] NULL,
        [attachmentFiles] [varchar](500) NULL,
        [newtitle] [varchar](50) NULL
    ) ON [PRIMARY]CREATE TABLE [dbo].[newsAttachment](
        [newsid] [int] NULL,
        [filename] [varchar](50) NULL
    ) ON [PRIMARY]insert into [news]
     select 10,'10A;10B','n10' union all
     select 11,'11A;11T','n11' union all
     select 12,'12C','n12' union all
     select 13,'13D;13E','n13' union all
     select 14,'14X;14Y;14Z','n14'
    -- 数据迁移
    insert into newsAttachment(newsid,filename)
    select a.newsid,
           substring(a.attachmentFiles,b.number,charindex(';',a.attachmentFiles+';',b.number)-b.number)
    from news a
    inner join master.dbo.spt_values b
    on b.type='P' and b.number between 1 and len(a.attachmentFiles)
    and substring(';'+a.attachmentFiles,b.number,1)=';'
       select * from newsAttachment/*
    newsid      filename
    ----------- ---------------
    10          10A
    10          10B
    11          11A
    11          11T
    12          12C
    13          13D
    13          13E
    14          14X
    14          14Y
    14          14Z(10 row(s) affected)
    */
      

  7.   


    学习了.
    如果复杂性太高的话,我觉得用数据库编程就代价太高了,用java程序把数据提取出来在处理的话,代价和难度就小得多了
      

  8.   

    那要看你怎么弄了,如果单表迁移,直接一个sql就完事了。大不了迁移之后手动修改,但是批量的时候要考虑的事项就非常多