2008-10-17 34 views
9

Estoy usando una página ASP donde tengo que leer un archivo CSV e insertarlo en la tabla de DB "Empleado". Estoy creando un objeto de TestReader. ¿Cómo puedo escribir un ciclo para ejecutar hasta la cantidad de filas/registros del archivo CSV que se está leyendo?Cómo leer archivos CSV línea por línea en VBScript

Respuesta

15

No intente analizar el archivo usted mismo, simplemente se dará un dolor de cabeza. Hay bastante más que dividir en nueva línea y comas.

Puede usar OLEDB para abrir el archivo en un conjunto de registros y leerlo como lo haría con una tabla db. Algo como esto:

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 

Mi vbscript está oxidado, así que verifique la sintaxis.

editar: El comentario de harpo muestra un buen punto acerca de las definiciones de campo. La definición de un archivo schema.ini le permite definir el número y los tipos de datos de los campos esperados. Ver: Puede manejar esto definiendo un archivo schema.ini. ver: http://msdn.microsoft.com/en-us/library/ms709353.aspx

+0

: cuidado con el recuento de campo se basa en la primera línea. Por lo tanto, si la cantidad de campos aumenta en cualquier punto del archivo, no podrá capturar los campos adicionales. Esto importaba en mi caso, por lo que rodé el mío (aunque no en VBScript). – harpo

+0

Esto es cierto. Puede evitar esta limitación definiendo un archivo schema.ini (http://msdn.microsoft.com/en-us/library/ms709353.aspx). Esto también le permite calificar los tipos de datos de los campos (de forma predeterminada, '0001' se leerá como '1') –

+0

Necesita un punto y coma después de la ruta a la carpeta - Server.MapPath ("ruta de acceso a la carpeta";) - pero esto me ha ahorrado horas de intentar analizar mi archivo CSV - ¡gracias! – whostolemyhat

Cuestiones relacionadas