将Excel数据导入到SQL Server数据库中

这个方法是到目前为止我见到最好的方法,还有几个要注意的问题也在下面提到了哦!其中还涉及到要注意到地方都在下面累出来了

1)接受数据导入的表已经存在。  
     insert into t1 select * from  OPENROWSET('MICROSOFT.JET.OLEDB.4.0'  ,
     'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$); 

这里默认是Excel的工作表一即sheet1,但是记住一定要加"$"

2)导入数据并生成表。 
     select * into t1 from  OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
     'Excel 5.0;HDR=YES;DATABASE=c:\\test.xls',sheet1$);

3) 导入Excel中指定的列到数据库表中指定的列。
     INSERT INTO t1(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET
'MICROSOFT.JET.OLEDB.4.0' ,'Excel5.0; HDR=YES; DATABASE=c:\\test.xls',sheet1$);

需要注意的地方。
1)外围应用配置器的设置。
    从“功能外围应用配置器”中选择“启动 OPENROWSET 和 OPENDATASOURCE 支持”选项。
这里可以通过SQL语句进行服务的开关,关于这个开关在我的博客上已经有了。
地址是:
http://www.cnblogs.com/forever4444/archive/2009/07/22/1528692.html
2)关闭Excel表。
     如果在导入时要导入的Excel表格处于打开状态,会提示:
   “无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "microsoft.jet.oledb.4.0" 的数据源对象。”
3)导入数据时,Excel的首行会作为表头,若导入到已存在的数据库表,则忽略首行。

常遇到的两个问题:
问题一】:已拒绝对 OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 的特殊访问。必须通过链接服务器来访问此提供程序。
分析】:这是因为您当前用来访问数据库的登录的权限不够(权限太低)。
解决】:要么您还用sa登录,要么修改当前登录的权限,步骤如下:企业管理器→安全性→登录→找到你所用的登录名→右击"属性"→服务器角色→将System Administrator选项打钩→确定即可。 【问题二】:OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。  OLE DB 错误跟踪[OLE/DB Provider 'MICROSOFT.JET.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005:  提供程序未给出有关错误的任何信息。]。
分析】:
      首先先检查一下你用来导入的Excel表是否已经打开,如果打开了,请关闭后重试一下。
还 是不行的话,继续往下看。如果你用来数据库操作的sql语句是用striing字符串保存的,且其中包含着.xsl文件的存放路径。那么问题可能就出在这 个路径上。您是否值用了一个斜杠"\"。如果只有一个斜杠的话,在运行前,错误列表中会提示"无法识别转义序列"。一旦运行,该提示就会消失,可能您就是 因为这样而没有注意到这错误。

 

这是我在网上发现的最好的导入方法了,讲得很详细。

转载http://www.cnblogs.com/forever4444/archive/2009/07/22/1528826.html

posted @ 2009-12-21 17:35  何翔华  阅读(677)  评论(0编辑  收藏  举报