Vb.net &引用;“不是有效的名称”;使用oledb从csv/txt文件检索数据时出错

Vb.net &引用;“不是有效的名称”;使用oledb从csv/txt文件检索数据时出错,vb.net,csv,oledb,jet,Vb.net,Csv,Oledb,Jet,我使用oledb驱动程序从csv/txt文件检索数据 ConnString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source = " & System.IO.Path.GetDirectoryName(strFileName) & "; Extended Properties = ""Text;HDR=YES;FMT=Delimited""" strQuery = "SELECT * FROM [" & System.IO

我使用oledb驱动程序从csv/txt文件检索数据

ConnString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source = " & System.IO.Path.GetDirectoryName(strFileName) & "; Extended Properties = ""Text;HDR=YES;FMT=Delimited"""

strQuery = "SELECT * FROM [" & System.IO.Path.GetFileName(strFileName) & "]"
在最后一行中,如果文件名太大,我会遇到以下错误

不是有效的名称。确保它不包含无效字符或标点符号,并且不太长。

我的问题- 文件名或select查询是否有任何限制,或者我需要遵循某种模式?

这就是为什么它是社区wiki的原因:

我建议查看内置的.Net,而不是使用Oledb。你需要包括

Imports Microsoft.VisualBasic.FileIO.TextFieldParser
下面是一个快速示例:

        Dim afile As FileIO.TextFieldParser = New _
          FileIO.TextFieldParser(FileName)
        Dim CurrentRecord As String() ' this array will hold each line of data '
        afile.TextFieldType = FileIO.FieldType.Delimited
        afile.Delimiters = New String() {","}
        afile.HasFieldsEnclosedInQuotes = True

        ' parse the actual file '
        Do While Not afile.EndOfData
            Try
                CurrentRecord = afile.ReadFields
            Catch ex As FileIO.MalformedLineException
                Stop
            End Try
        Loop

我已经对

进行了升级投票,我没有确切地找出问题所在,但很明显,长文件名造成了问题,下面是

在将文件重命名回原始文件名后检索数据时,我刚刚使用新Guid重命名了该文件

这并不是我想要的,我仍在寻找更好的解决方案。如果有人找到了,请发邮件


谢谢

一些实验表明,没有扩展名的文件名不能包含“.”。因此,
MyData.csv
是一个有效的文件名,但
My.Data.csv
不是。

刚刚解决了这个问题,我发现文件路径或名称的任何部分都不能包含空格或单引号,或者文件路径将被确定为无效。无论我试图对名字进行什么限定或转义,这都适用

在我删除所有空格和单引号后,一切都很好。例如

无效:

"C:\Users\Administrator\Documents\Data\User''s Folder\Import Data.csv"
C:\Users\Administrator\Documents\Data\Users-Folder\ImportData.csv
有效:

"C:\Users\Administrator\Documents\Data\User''s Folder\Import Data.csv"
C:\Users\Administrator\Documents\Data\Users-Folder\ImportData.csv

我不明白你想说什么。你能解释一下吗?我不太清楚文件名是否包含“.”字符,因为这个问题在不久前发生过,但这可能就是问题所在。