Vb.net &引用;“不是有效的名称”;使用oledb从csv/txt文件检索数据时出错
我使用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
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
我不明白你想说什么。你能解释一下吗?我不太清楚文件名是否包含“.”字符,因为这个问题在不久前发生过,但这可能就是问题所在。