我的excel文件(d:\book1![sheet1])如下:
姓名 行业        体检日期
a    食品        2006-3-7
b    公共场所    2006-4-1
...现有的SQL表:ta 如下:
姓名 行业        体检日期    有效日期
c    食品        2006-3-1    2007-2-28
d    公共场所    2006-4-2    2007-4-1
...
现在我想将excel表中的数据导入SQL的ta表中,这个有效日期怎样在导入的时候自动生成呢?
(食品行业的有效期是1年,公共场所行业的有效期是二年)

解决方案 »

  1.   

    insert into ta select 姓名,行业,体检日期,有效日期=case 行业 when '食品' then dateadd(year,1,体检日期) when '公共场所' then dateadd(year,2,体检日期) else 体检日期 end
     from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=d:\book.xls',sheet1$)
      

  2.   

    上边的有效日期多了一天,改正一下~insert into ta select 姓名,行业,体检日期,有效日期=case 行业 when '食品' then dateadd(day,-1,dateadd(year,1,体检日期)) when '公共场所' then dateadd(day,-1,dateadd(year,2,体检日期)) else 体检日期 end
     from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=c:\book.xls',sheet1$)
      

  3.   

    楼主,你可以直接修改DTS的转换脚本.如
    DTSDestination("有效日期") =DateAdd("y", DTSSource("有效年数"), DTSSource("体检日期 "))
      

  4.   

    谢谢楼上两位。
    用dts来做是最好的。可是那个脚本语言不好理解啊,一定要修改脚本吗?图形化的界面有吗?
      

  5.   

    现在的问题是我的excel文件在客户端的d盘,数据库在服务器端。这可怎么办啊?
    导入的时候出错了。
    我在服务器上作了网络驱动器映射,映射为Z盘,我改成
    insert into ta select 姓名,行业,体检日期,有效日期=case 行业 when '食品' then dateadd(day,-1,dateadd(year,1,体检日期)) when '公共场所' then dateadd(day,-1,dateadd(year,2,体检日期)) else 体检日期 end
     from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=z:\book.xls',sheet1$)
    也不行。