Visual Basic.NET - Ayuda con archivo de texto y sql

 
Vista:

Ayuda con archivo de texto y sql

Publicado por Tulipan (9 intervenciones) el 10/06/2010 18:53:28
Hola!!
Ncesito que me ayuden con un problema que se me presenta
resulta que tengo que leer un archivo d etexto inmenso de como 1000 lineas o algo asi y cargarlo en una en sqlserver, mi programa ya lo hace.. pero es muy poco funcional porq se tarda demasiado tiempo... y necesito hacerlo mas funcional...
lo que hago hasta ahora es leer linea por linae del archivo y usar el split porque cada campo esta separado por coma y al final de cada linea hago un insert to in la tabla??
como puedo hacerlo mas eficiente??
gracias por sus comentarios!1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con archivo de texto y sql

Publicado por OliBeer (391 intervenciones) el 10/06/2010 19:54:58
Hola,

ok, cómo estás haciendo el Insert? o sea, lees una línea, la separas y todo, y esa línes la guardas? de una por una? o guardas todas en un sólo Insert?

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con archivo de texto y sql

Publicado por Tulipan (9 intervenciones) el 10/06/2010 21:58:56
OliBeer.. Gracias por contestar
Despues de que separo todo lo mando a insertar con un insert in to tabla (campo1, ..campo n) values (x,...xn) y asi
Ahora lo que stoy haciendo es mandando toda la linea de una vez a un datatable y eso es mas rapido pero nose como mandar el datatble de una sola vez a guardar ala tabal..
nose si hay algo asi como que agarre todo el datatable y lo sustituya en la tabla???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con archivo de texto y sql

Publicado por Tulipan (9 intervenciones) el 10/06/2010 23:51:08
No encuentra una forma de hacer este programa mas eficiente.. ya probe cargando todo en un datset y actualizando la tabla.. pero igual tarda demasiado!!
que puedo hacer???
Porfavor ayudenme!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Ayuda con archivo de texto y sql

Publicado por roger (186 intervenciones) el 11/06/2010 00:00:34
me parece mas conveniente que postees el codigo que tienes para poder verificar si hay algun problema o identificar las lineas o fragmentos que se pueden optimizar, porque sin ver el codigo es mucho mas complicado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con archivo de texto y sql

Publicado por Tulipan (9 intervenciones) el 11/06/2010 00:46:48
Gracias Roger!

Este es el codigo actualizando con el dataset

With OpenFileDialog1
.FileName = "C:\CDR"
.Filter = "Archivos de texto *.txt|*.txt|Todos *.*|*.*"
.ShowDialog()
If .FileName <> "" Then
Label1.Text = OpenFileDialog1.FileName
Else
MsgBox("Ningun Archivo seleccionado para leer")
End If
End With
Dim lector As TextFieldParser
Dim linea As String()
lector = New TextFieldParser(Trim(Label1.Text))
lector.TextFieldType = FieldType.Delimited
lector.SetDelimiters(",")
'****Aqui llena el dataset de la tabla************
While Not lector.EndOfData
Try
linea = lector.ReadFields()
Me.CDRDataSet.prueba.Rows.Add(linea)
Catch ex As MalformedLineException
MsgBox("Linea " & ex.Message)
End Try
End While
'**********Aqui actualiza la tabla en la base de datos con el dataset**********************
Me.PruebaTableAdapter.Update(Me.CDRDataSet.prueba)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Ayuda con archivo de texto y sql

Publicado por roger (186 intervenciones) el 11/06/2010 19:00:41
me parece que hay dos puntos en donde se puede estar quedando el programa, primero en el ciclo donde se agregan las filas al dataset, que seria debido al TextFieldParser y algun problema asociado al rendimiento de este objeto (me parece poco probable), y segundo, que me parece lo mas probable, es que el programa se este quedando en el update del dataset debido a las validaciones internas que este maneje y aparte las de la propia base de datos que puede hacer mas lento el proceso. Te recomiendo que utilices el sqlBulkCopy para hacer este tipo de inserciones masivas ya que es muchisimo mas rapido que hacer una serie de inserts por separado, y mas aun, de hacer un update de un dataset. Seria algo asi

Dim bulkCopy As New System.Data.SqlClient.SqlBulkCopy("cadenaConexion")
bulkCopy.DestinationTableName = "tablaDestino"
bulkCopy.WriteToServer(dataset.Tables(0) .GetChanges(DataRowState.Added))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con archivo de texto y sql

Publicado por Tulipan (9 intervenciones) el 11/06/2010 19:43:18
Roger muchas gracias.. no tenia idea del bulkcopy, me ayudo muchisimo esas 3 lineas que me diste, se me redujo el proceso a 5 minutos.. no es tan poco pero lo que duraba antes es muchisimoo!!
solo sustitui lo del update por lo que me dijiste
Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con archivo de texto y sql

Publicado por Tulipan (9 intervenciones) el 14/06/2010 17:41:48
Ahora resulta que siempre se pone lenta la aplicacion.. nose que pasa pero volvio a tardarse mucho de nuevo.. estoy tratando de cargar un .txt de 34 kb y es demasiado lento, pasaron 15 min y nada y antes cargue uno de 32 y todo salio bien fueron los 5 inutos.. pero ahora nose que sucede..
alguien puede ayudarme porfavor!!
es muy importante y urgente!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar