用openrowset读取文件数据
时 间:2007-12-24 08:49:32
作 者:UMVSOFT整理 ID:16 城市:江阴
摘 要:用openrowset读取文件数据
正 文:
基本语法:
OPENROWSET ( 'provider_name'
, { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog.] [ schema.] object
| 'query' }
)
, { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog.] [ schema.] object
| 'query' }
)
详细介绍可以看 SQLSERVER 联机帮助。
具体操作:
1.创建一个 txt 文本,里面输入一些数据。第一行必须是列名,列之间必须用" , " 分隔(我试了下空格和制表符都不行,不知道这个间隔符可不可以该的),另外默认的数据类型是这样的:如果是纯数字会转换为相应的数字类型,还有字符的话会转换为字符类型,如果中间有 $ 符会转换为 money 类型(其他货币符号我没有尝试),如果在数据两边加上双引号("),会强制转为字符类型。
a.txt:
DMDUNIT,DMDGROUP,LOC
"1001","14","1401"
DMDUNIT,DMDGROUP,LOC
"1001","14","1401"
2.写查询语句:
select * from
OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=c:\;','select * from a.txt')
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].
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
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
JOIN OPENROWSET('MSDASQL','DRIVER={SQL Server};SERVER=服务器2;UID=用户名;PWD=密码', 库B.所有者.表b) b on a.field=b.field
排序规则的问题:
当用 OpenRowset 进行表连接的时候,
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 通过命令按钮让Access列表...(04.24)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)

学习心得
最新文章
- 仓库管理实战课程(15)-月度库存...(04.30)
- Access选择打印机、横纵向、纸...(04.29)
- 仓库管理实战课程(14)-出库功能...(04.26)
- 通过命令按钮让Access列表框指...(04.24)
- 仓库管理实战课程(13)-入库功能...(04.21)
- Access控件美化之--美化按钮...(04.19)
- Access多行文本按指定字符筛选...(04.18)
- Microsoft Access数...(04.18)
- 仓库管理实战课程(12)-月度结存...(04.16)
- 仓库管理实战课程(11)-人性化操...(04.15)