用openrowset读取文件数据-钱玉炜
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> ADP及SQL SERVER


用openrowset读取文件数据

发表时间:2007/12/24 8:49:32 评论(0) 浏览(9576)  评论 | 加入收藏 | 复制
   
摘 要:用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群(群号:198465573)
 
 相关文章
如何在ADP中读取SQL服务器当前时间   【朱亦文  2004/11/10】
判断当前读取的字符为汉字,还是英文字母或数字?  【bamboo  2007/10/25】
格式化读取文本文件  【harsonliao  2007/10/29】
用openrowset读取文件数据  【UMVSOFT整理  2007/12/24】
[转]SQLServer跨服务器访问数据库(openrowset/...  【金宇  2013/5/27】
常见问答
技术分类
相关资源
文章搜索
关于作者

钱玉炜

文章分类

文章存档

友情链接