鹰之翼

黑鹰的世界

  DonewsBlog  |  Donews首页  |  Donews社区  |  Donews邮箱  |  我的首页  |  联系作者  |  聚合   |  登录
  79篇文章 :: 58篇收藏:: 34篇评论:: 1个Trackbacks

文章

收藏

相册

朋友的BLOG

朋友网站

网站留言板

我的网站

我管理的几个论坛版面

存档


正在读取评论……


       早上,自己照常联上了CSDN。在VFP版块看了,没有什么需要回复的贴子以后,就转到MS SQLSERVER版,最近自己正好没什么事情做,于是想多学一些东西,索性在SQL SERVER的坛子里转转,至少也长长见识。

  这时发现一个贴子,是关于SQL打开EXCEL文件的贴子。(自己一向对异构数据平台之间的数据交换感兴趣,当然不会放过这样的学习机会)原贴转述:

sql server 2000
比如语句:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

如果没有打开account.xls,直接运行上面的语句是没有问题的,如果打开account.xls,直接运行上面的sql语句,就会出错,我的问题是,
我如何写sql语句,当打开account.xls时,提示先关闭,不打开account.xls,就运行上面的sql语句,请问如何来写sql语句?

  自己看了一下,把上面的语句记了下来,估计以后会用到,然后就去做别的事了。过了片刻,不知怎得来了兴致,让试一下效果。于是打开了MS SQL SERVER服务,然后找了一个excel文件表,放到C盘下。回到查询分析器,把语句粘过来,照猫画虎,把参数改了一下,OK!运行:

   出错!!找不到表xactions,感情是后面是表名不对,改为sheet1,问题依旧。自己发毛了,自己对SQLSERVER 确实只晓得一些皮毛,打开联机文档,看了下OPENDATASOURCE函数的使用说明,没收获。看一下示例吧,晕,和上面的句子一样。自己真是一筹莫展。这可如何是好,然后自己试着把三个点去掉,报话法错误。

   然后看了一下SQLSERVER的示例,试了一下,还成,通过了,语句是这样的:

SELECT   *
FROM      OPENDATASOURCE(
         'SQLOLEDB',
         'Data Source=ServerName;User ID=MyUID;Password=MyPass'
         ).Northwind.dbo.Categories
SELECT   *
FROM      OPENDATASOURCE(
         'SQLOLEDB',
         'Data Source=ServerName;User ID=MyUID;Password=MyPass'
         ).Northwind.dbo.Categories
  原创的三个.是有用意的,分别表示,数据库名,所属名和最终二维关系表的名称,只是在EXCEL中"."之间的内容可以略去而已。那问题出在哪了呢?

  自己搞不懂,中午午饭回来,自己决定从百度上一探究竟。还算顺利,找到了很多结果,后来自己看了一个示例,是一篇SQL注入的文章,无心看内容,看到文中有这样一个句子:

select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8)
from
opendatasource('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls'
--,Sheet1$)
)...[Sheet1$]

  哈,估计自己知道出错的原因了,然后,把这一个句子拷到查询分析器里,然后把各参数改一下,OK,真的看到了结果。自己修改后的语句:

select * from
opendatasource('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\all.xls'
--,Sheet1$)
)...[Sheet1$]

顺利通过!!庆幸之余决定括大战果。然后把又回到上面的语句,类似地,把语句稍微修改了一下:

SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\all.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]

OK,顺利通过,看来,SQL中打开EXCEL文件至少有两种途径,

一种是

SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\all.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]

另一种是:

select * from
opendatasource('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\all.xls'
--,Sheet1$)
)...[Sheet1$]

  这样,这一问题算是顺利解决了,不过今天给自己很多启示:一,不要轻信各种资料,有很多事情要试过才知道。在试的过程中你会发现学会的东西要比这点东西多得多。所以,要尽可能得多亲自实践;二,不要轻易放弃,有些时候问题能否解决就在于自己能否再坚持一步;三,要有开放式的学习模式,关键的时候还是要有网络,互联网本身就是一个资料宝库,就看你能不能从宝库里找到金子。

 

 



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=927618


[点击此处收藏本文]  发表于2006年06月26日 4:17 PM




正在读取评论……

发表评论

大名:
网址:
验证码
评论