使用 OleDbConnection 读取制表符分隔的文件
我的制表符分隔文件是这样的:
ISO ISO3 ISO-Numeric
AD AND 20
我一直在尝试以下代码,但没有成功。
OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= |DataDirectory|;Extended Properties='text;HDR=Yes;FMT=TabDelimited'");
OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM countryInfo.txt", cn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
cn.Open();
DataTable dt = new DataTable();
da.Fill(dt);
这是数据集可视化工具的屏幕截图。它显然不是我想要的输出。
有什么建议吗?这是我的 Schema.ini 文件。它与文本文件位于同一目录中。
[countryInfo.txt]
Format=TabDelimited
ColNameHeader=True
CharacterSet=ANSI
我应该使用类似 FileHelpers 的东西吗?
@Hans Passant 这是一个屏幕截图。
My tab-delimited file is something like this:
ISO ISO3 ISO-Numeric
AD AND 20
I've been trying the following code with no luck.
OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= |DataDirectory|;Extended Properties='text;HDR=Yes;FMT=TabDelimited'");
OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM countryInfo.txt", cn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
cn.Open();
DataTable dt = new DataTable();
da.Fill(dt);
Here's a screenshot of the Dataset Visualizer. Its obviously not the output i'm after.
Any suggestions? Here's my Schema.ini file. Its in the same directory as the text file.
[countryInfo.txt]
Format=TabDelimited
ColNameHeader=True
CharacterSet=ANSI
Should i just use something like FileHelpers instead?
@Hans Passant Here's a screenshot.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
创建 schema.ini 文件并将其保存到包含以下文本的应用程序文件夹中:
然后使用以下代码加载 Data.txt 文件:
Create and save an schema.ini file into the application folder containing the following text:
Then use the following code to load the Data.txt file:
嗯,一个明显的候选者是这个空白实际上不是制表符而是空格。尝试 FMT=Delimited( )。使用十六进制查看器查看实际情况。背景资料在这里。
此帖子说明了原因使用像 Jet 这样有缺陷的代码块,在过去的 9 年里一直不受支持,这就是一个错误。有了答案,将 schema.ini 中的第一行留空。
Well, one obvious candidate is that this white space isn't actually a tab but spaces. Try FMT=Delimited( ). Use a hex viewer to see what's really there. Backgrounder is here.
And this thread shows why using a buggy chunk of code like Jet that hasn't been supported for the past 9 years is such as mistake. With the answer, leave the first line in schema.ini blank.