Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > ADP及SQL SERVER

用openrowset读取文件数据

时 间:2007-12-24 08:49:32
作 者:UMVSOFT整理   ID:16  城市:江阴
摘 要:用openrowset读取文件数据
正 文:

基本语法:


OPENROWSET ( 'provider_name'
    , { 'datasource' ; 'user_id' ; 'password'

        | 'provider_string' }
    , { [ catalog.] [ schema.] object
        | 'query' }
    )

详细介绍可以看 SQLSERVER 联机帮助。


具体操作:
1.创建一个 txt 文本,里面输入一些数据。第一行必须是列名,列之间必须用" , " 分隔(我试了下空格和制表符都不行,不知道这个间隔符可不可以该的),另外默认的数据类型是这样的:如果是纯数字会转换为相应的数字类型,还有字符的话会转换为字符类型,如果中间有 $ 符会转换为 money 类型(其他货币符号我没有尝试),如果在数据两边加上双引号("),会强制转为字符类型。


a.txt:
DMDUNIT,DMDGROUP,LOC
"1001","14","1401"

2.写查询语句:

select * from
OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=c:\;','select * from a.txt')

OK,搞定,联机帮助上说:“依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 Insert、Update 或 Delete 语句的目标表。”不过,'MSDASQL' 似乎没有提供这种能力,我尝试了 Insert、Update、Delete 操作,返回错误:

服务器: 消息 7390,级别 16,状态 1,行 1
The requested operation could not be performed because the OLE DB provider 'MSDASQL' does not support the required transaction interface.
OLE DB error trace [OLE/DB Provider 'MSDASQL' IUnknown::QueryInterface returned 0x80004002].

如果你还不满足,想做些表连接什么的,没问题:

select A.* from DMDUNIT A
RIGHT OUTER JOIN
OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=c:\;','select * from a.txt') B
ON A.DMDUNIT=B.DMDUNIT

PS:其实用 OpenRowset 也可以解决不同服务器上数据库的表连接问题:

Select * FROM  表a a 
JOIN OPENROWSET('MSDASQL','DRIVER={SQL Server};SERVER=服务器2;UID=用户名;PWD=密码', 库B.所有者.表b) b on a.field=b.field

排序规则的问题:
    当用 OpenRowset 进行表连接的时候,

Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助