我有一个需要上传到网站数据库的CSV文件。 CSV是一个普通的逗号分隔文件,但我遇到的问题是某些字段在文本中有逗号。文本中包含逗号的大多数字段都被引号括起来,因此我假设可以使用某些字段。以下是我目前的代码:
set objFile = server.CreateObject ("Scripting.FileSystemObject")
set objFileTextStream = objFile.OpenTextFile(file)
'skip first line as those are headers
objFileTextStream.skipLine
Do While objFileTextStream.AtEndOfStream <> True
strLine = objFileTextStream.ReadLine
strLinePart = split(strLine,",")
'Will have code to insert data in to the database here
Loop
objFileTextStream.Close
Set objFileTextStream = Nothing
非常感谢任何帮助......
答案 0 :(得分:4)
使用.CSV文件的最佳方法是通过ADO文本驱动程序(start here)。它们甚至可以用于更复杂的数据(例如嵌入式换行,UTF-8,奇怪的分隔符或行结尾)。
然后可以通过执行SQL语句(“SELECT / INSERT INTO ... IN”,“LOAD DATA INFILE ...”或DBMS支持的任何内容)而不是编写循环来将.CSV表导入DBMS。 / p>
但是:“如果[仅]文本中包含逗号的大多数字段都被引号括起来”,那么你就麻烦了。即使是“滚动你自己的”解析器也依照法律“垃圾进,垃圾出”。如果您在“,”上拆分()并获得超过预期的元素,则只有(超级)人可以将部件分配到正确的列。
更新wrt评论:
坏行
a,b,c,...
可能意味着:
"a,b","c",...
或强>
"a","b,c",...
人类,解析器或RegExp需要非常具体的附加信息来确定哪种替代方案是正确的。
如果您不能强制您的数据源提供符合标准的.CSV,您应该将(子)任务“将垃圾变换为'真实'.CSV”分离为具有自己的开发过程和测试的独立过程。然后,您可以使用功能更强大的工具(Perl's CSV module,some CSharp libraries/projects,...),和/或甚至让人类查看关键案例。