日期:2014-05-17  浏览次数:20346 次

数据库之间表数据导入
SQL2000 数据库之间表数据导入 求脚本处理   (某两个列的值通过计算出来的)
新和旧的数据库结构是一致的,需要导入没有完成或没有终止的单据到新数据库.

如数据库名:yerar2013 ,
注:quantity订单数量,referquantity入库数量,closed 1时为终止了明细。
导入新数据库时 quantity=旧数据库quantity-旧数据库referquantity  并且数量大于0的。
porder订单主表
billid,traderid,billdate,billcode,   ...... 后面N个列
1001  , 3007   , 2013-12-12, po0001 ,......
1002  , 3009   , 2013-12-12, po0002 ,......
1007  , 3006   , 2013-12-12, po0003 ,......

porderdetail订单从表
billid ,itemno,materialid,quantity,referquantity,closed......后面N个列
1001   , 1    , 9001     , 30000  , 25000,  0 , ......
1001   , 2    , 9007     , 28000  , 27000,  1 , ......

1002   , 1    , 9001     , 30000  , 0,  0 , ......
1002   , 2    , 9007     , 28000  , 0,  1 , ......

1007   , 1    , 9001     , 30000  , 30500,  0 , ......
1007   , 2    , 9007     , 28000  , 28000,  0 , ......

新数据库名:year2014
porder订单主表
billid,traderid,billdate,billcode,   ...... 后面N个列
1001  , 3007   , 2013-12-12, po0001 ,......
1002  , 3009   , 2013-12-12, po0002 ,......

porderdetail订单从表
billid ,itemno,materialid,quantity,referquantity,closed......后面N个列
1001   , 1    , 9001     , 5000   , 0,  0 , ......
1002   , 1    , 9001     , 30000  , 0,  0 , ......


------解决方案--------------------
动态生成列名
DECLARE @s NVARCHAR(4000)
SET @s = ''
SELECT  @s = @s + ',' + 'isnull('+QUOTENAME(name)+','''')'
FROM    syscolumns
WHERE   id = OBJECT_ID('表名')
        --AND name NOT IN ( '不希望显式的列' )
SET @s = STUFF(@s, 1, 1,&n