首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

数据库其间表数据导入

2013-12-22 
数据库之间表数据导入SQL2000 数据库之间表数据导入 求脚本处理(某两个列的值通过计算出来的)新和旧的数据

数据库之间表数据导入
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, '')
EXEC('select '+@s+' from 表名  ')

[解决办法]
这些脚本是针对你的这句话:因为表中的列名比较多,但我想写脚本时不写列名,减少工作量

热点排行