Microsoft Access Text Driver:查询时移除伪表名称中的扩展名
解决Microsoft Access Text Driver伪表名称带扩展名的问题
1. 配置驱动实现无扩展名表名查询
Access Text Driver默认要求查询时指定文件扩展名,但可以通过在临时目录中创建Schema.ini配置文件来映射无扩展名的表名到实际文件。
比如你有一个table.csv文件,想要用SELECT * FROM table查询,只需在临时目录下新建Schema.ini,添加以下内容:
[table.csv] TableName=table Format=Delimited(,)
TableName字段定义了驱动识别的伪表名称(无扩展名)Format需匹配你的文件分隔格式(逗号分隔就写Delimited(,),制表符则是Delimited(\t))- 每个需要映射的文件都要在Schema.ini中添加对应的配置段
2. 使用无扩展名的分隔文件
可以使用无扩展名的文本文件,关键是通过Schema.ini告诉驱动如何识别这些文件:
- 将临时文件重命名为无扩展名形式(比如
table而非table.csv) - 在临时目录的Schema.ini中添加:
[table] Format=Delimited(,)
- 连接字符串可保留原Extensions参数,或直接移除,驱动会通过Schema.ini识别文件格式
另外,若想让驱动自动识别无扩展名文件,也可尝试将连接字符串的Extensions参数改为:
Driver={Microsoft Access Text Driver (*.txt, *.csv)};DBQ=U:\path\to\Temp\directory;Extensions="asc,csv,tab,txt,";
(末尾添加逗号,允许空扩展名)
其他可行思路
- 动态生成Schema.ini:在程序生成临时文件后,自动写入或更新Schema.ini的映射配置,适配不同文件名需求
- 切换到OLEDB驱动:若业务允许,可改用ACE OLEDB Provider连接文本文件,连接字符串示例:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=U:\path\to\Temp\directory;Extended Properties="Text;HDR=Yes;FMT=Delimited(,)"
同样可配合Schema.ini实现无扩展名表名查询
内容的提问来源于stack exchange,提问作者Marie R
相关产品推荐
相关产品推荐

