Как читать файлы CSV построчно в VBScript - PullRequest
9 голосов
/ 18 октября 2008

Я использую ASP-страницу, где мне нужно прочитать CSV-файл и вставить его в таблицу БД «Сотрудник». Я создаю объект TestReader. Как я могу написать цикл для выполнения до количества строк / записей файла CSV, который читается?

Ответы [ 2 ]

15 голосов
/ 18 октября 2008

Не пытайтесь разобрать файл самостоятельно, у вас просто болит голова. Это немного больше, чем разделение на новую строку и запятые.

Вы можете использовать OLEDB, чтобы открыть файл в наборе записей и прочитать его так же, как в случае таблицы db. Примерно так:

Dim strConn, conn, rs

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("path to folder") & ";Extended Properties='text;HDR=Yes;FMT-Delimited';"

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConn

Set rs = Server.CreateObject("ADODB.recordset")
rs.open "SELECT * FROM myfile.csv", conn

while not rs.eof
    ...
    rs.movenext
wend

Мой VBScript ржавый, поэтому проверьте синтаксис.

edit: Комментарий harpo поднимает хороший вопрос об определениях полей. Определение файла schema.ini позволяет определить количество и типы данных ожидаемых полей. Смотрите: Вы можете справиться с этим, определив файл schema.ini. см .: http://msdn.microsoft.com/en-us/library/ms709353.aspx

6 голосов
/ 18 октября 2008

Почему бы просто не вставить CSV? Например:

SELECT * INTO MyTable FROM OPENDATASOURCE('Microsoft.JET.OLEDB.4.0', 
'Data Source=F:\MyDirectory;Extended Properties="text;HDR=No"')...
[MyCsvFile#csv]

От: http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.database.ado/2007-05/msg00057.html

...