我需要读取各种数据文件类型,例如xlsx,csv,txt和mdb,并且我想使用OleDB连接,以便读取文件的过程相同,只是连接字符串不同。但是,OleDB 忽略连接字符串中的分隔符,如下所示,仅读取逗号分隔符。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Text;HDR=Yes;Delimited(t)';
Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Text;HDR=Yes;FMT=TabDelimited';
我宁愿让 OleDB 引擎完成这项工作,而不是自己解析制表符分隔的文件。
有几个关于这个问题的StackOverflow问题,解决方案通常是在同一目录中创建一个.ini文件,但有时我的用户对该文件夹没有写入权限。看到所有与我类似的StackOverflow问题至少已有几年的历史,有人对这个问题有任何更新的信息吗?
这就是我如何使用|
分隔符使用 OleDB 读取|
分隔的.csv或.txt文件,但是,我使用的是 ACE 引擎并从 C# 构造连接字符串:
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path.GetDirectoryName(catalogFile) + ";Extended Properties='text;HDR=YES;FMT=Delimited(" + (char)124 + ")'";
(char)124
代表 |
的 ASCII 代码。知道 TAB 的 ASCII 代码是 9,您可以尝试在连接字符串中使用它:
...;Extended Properties='text;HDR=YES;FMT=Delimited(" + (char)9 + ")'";
请尝试上述代码片段,并使用 MS Access 数据库引擎驱动程序尝试代码。由于它是较新的,也许它具有更好的分隔符配置处理。