0

我正在使用 VB6 和 ADO 以及 Microsoft 文本驱动程序从 ASCII 文件中导入数据。该文件以逗号分隔,但它还包含文本数据字段周围的双引号。这些字段也是固定宽度。

我遇到的问题是,只要其中一行包含引号,驱动程序就会错误地读取列双引号内容里面。这发生在左侧第二列的“部件描述”列中。发生这种情况时,右边的列都是 Null 值,而在文本文件中不是这种情况。

我认为最好只使用逗号作为分隔符。但是,我相信逗号也出现在“部件描述”列中,所以这意味着我应该真正将文件加载为固定宽度。我不知道有什么方法可以做到这一点,除非我可以在 schema.ini 文件中指定它。

关于如何解决这个问题的任何想法?

编辑:
您可以在 Schema.ini 文件中指定固定宽度。但是,在我看来,也作为分隔符/限定符存在的逗号和引号会阻止它正常工作。看起来我可能必须“手动”读入文件并以我自己的格式写回,然后再使用 MS Text 驱动程序加载它。还在寻找其他意见。

4

2 回答 2

0

我对区域设置格外小心——一些用户更改了默认列表分隔符。通常用schema.ini这样的方法解决这个问题:

[MyFile.csv]
Format=Delimited(,)
于 2011-03-08T14:09:52.587 回答
0

我会尝试更改FormatJet 文本引擎的注册表中的值(如果这是您正在使用的)键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text。我认为默认值是CSVDelimited,但您可以将其更改为FixedLength. 请参阅http://msdn.microsoft.com/en-us/library/ms974559.aspx

可能值得补充的是,尽管您有一个Schema.ini设置文件,但在某些选项上,注册表还是会否决它们

实际上,查看我提供的链接,您似乎必须schema.ini文件用于固定长度的文件。您是否尝试过类似以下指定宽度的方法?

[测试.txt]

格式=固定长度

Col1=名字文本宽度 7

Col2=姓氏文本宽度 10

Col3=ID 文本整数 3

于 2011-03-08T12:52:06.740 回答