我用下列语句导入数据:
 insert OPENDATASOURCE(
         'SQLOLEDB',
         'Data Source=tsy;User ID=sa;Password=tongshiyong'
         ).vms.dbo.temp (a,b,c)
(SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\test.xls";User ID=;Password=;Extended properties=Excel 5.0')...sheet1$)然而我在SQL查询分析器中执行:
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\test.xls";User ID=;Password=;Extended properties=Excel 5.0')...sheet1$
查看Excel的值时确发现和Excel表格里的值不一样,出现了NULL值,怎么办?
例如:
Excel表格的值为:
                1   2 3
               12   34    45
               34   h      I
而在查询分析器中则显示为:
               1    2   3
               12   34   45
               34   NULL NULL插入数据库的某个表时也是显示为NULL
有什么好的解决办法吗???

解决方案 »

  1.   

    因为你的excel的2,3列有两中数据类型(一会儿数值,一会儿字符)你让sql server 认哪种类型呢?
    所以sql server 干脆认他第一次碰到的数据类型也就是34 和 45,下面的他不高兴认了,就给他个
    NULL吧
      

  2.   

    用这种方法,把excel打开,在把本地的SQL打开,然后把excel的值赋给SQL!
      

  3.   

    能不能这样啊,先在excel里把 2,3列前面加个'a'
    然后导进sql server后 update 表 set 字段=substring(字段,2,len(字段)-1)
      

  4.   

    这样试一下
    insert OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=tsy;User ID=sa;Password=tongshiyong'
             ).vms.dbo.temp (a,b,c)
    (SELECT convert(float(8),1) as a,convert(char(10),2) as b,convert(char(10),3) as c
     FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\test.xls";User ID=;Password=;Extended properties=Excel 5.0')...sheet1$)
      

  5.   

    应该是:
      (SELECT convert(float(8),a) as a,convert(char(10),b) as b,convert(char(10),c) as c
     FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\test.xls";User ID=;Password=;Extended properties=Excel 5.0')...sheet1$)吧? 
    这样执行的结果也是一样的:
                    1    2   3
                   12   34   45
                   34   NULL NULL
    不知道是怎么回事,有那位高人指点一下! 不胜感激???