现在有一张FoxPro表!!需要导数据到Sql sever里!!两张表结构不一样!!而且FoxPro的里不是每个字段的内容我都需要!!写程序导入的话,客户不会配数据源。其中FoxPro中有时间字段是我需要的!!但它的日期格式是mm/dd/yy,sql Sever里的时间类型格式是 yyyy-mm-dd.有没有什么办法用Sql语句把FoxPro里需要的数据导入到Sql Sever里!!客户只会用查询分析器(这都是好不容易教会的,客户在外地,老板说不能现场解决)

解决方案 »

  1.   

    OPENROWSET('MSDASQL','Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=<path>',{[catalog.][schema.]object|'query'})
      

  2.   

    OPENROWSET可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。
    一楼写的是用OPENROWSET访问OLE DB数据源(VF)的访问方法.
      

  3.   

    还是没解决实际问题!!!最关键的是FoxPro的日期类型怎么导成Sql Sever的datetime类型!!OPENROWSET('MSDASQL','Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=<path>',{[catalog.][schema.]object|'query'})这并不能解决实际问题
      

  4.   

    先导入到Excel中,然后再次导入到SQL中。
      

  5.   

    foxpro将日期型转换成STR类型再导不知道行不行str(year(dtDate))+'-'+str(month(dtDate))+'-'+str(day(dtDate))应该可以隐式转换吧
      

  6.   

    正常的就可以导的,日期它会自动转换的。
    方法1:把dbf表导到excel中,然后再去掉不必要的字段导入到sql server中;
    方法2:select * from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:',
    'select * from [aa.DBF]')备注:如果在导入的时候,日期型的不能导入,可以把sql的日期型字段改为字符型的。
      

  7.   

    至于时间的问题,可以在转换时,对数据表进行遍历操作,修改列内容后保存到新表中
    可以使用SQL的游标来实现
      

  8.   

    就是你导入到SQL数据库你可以用:update 表 g set g.date=convert(char,g.date,23)来更新时间格式不就得了`