Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Pasar datos excel a una BD

Estas en el tema de Pasar datos excel a una BD en el foro de .NET en Foros del Web. Hola foro, ¿que tal? Pues les venia con esta duda: - Tengo un proyecto en vb.net (usando visual studio 2010 para mas informacion), que usa ...
  #1 (permalink)  
Antiguo 17/05/2013, 10:58
 
Fecha de Ingreso: abril-2013
Mensajes: 37
Antigüedad: 11 años
Puntos: 1
Pasar datos excel a una BD

Hola foro, ¿que tal?

Pues les venia con esta duda:
- Tengo un proyecto en vb.net (usando visual studio 2010 para mas informacion), que usa una base de datos enorme (1GB de datos, para mi eso es enoooorme) en mysql. Pues lo que hace la aplicaion es "importar" los datos de la hoja de calculos y ponerlos en una tabla.

Tonto no soy (por ahora, jaja, el día de mañana no se que será de mí) asi que he hecho que los campos de la tabla de la base de datos coincida con los nombres de los campos en la hoja de calculo (mas que nada para que coincida).

Bueno, pues mi duda es: ¿como hago yo para que mediante un metodo en vb.net la tabla de la base de datos coja los datos de la hoja de calculo excel?

Les dejo un poco de mi codigo para que asi puedan orientarse mejor (y poder ayudarme con más eficiencia, como no, una imagen vale mas que mil palabras).

Antes de nada unas premisas: tengo una clase vb que realiza la conexion a la base de daatos y otra que realiza los metodos pertinentes para controlarla etc, resumiendo, que el control de la BD esta echo, lo que necesito saber es como (que codigo sql y añadidos de vb.net necesarios para su funcionamiento) importar estos datos.

'El objeto objHojita es para controlar la clase de control BD
'Importar es el metodo que se encargara de importar los datos (por lo visto no me dara un derrame cerebral inventando nombres, eh?), y lo que hago es pasarle la ruta del archivo excel por un textbox, una tabla que contendra datos de forma temporal ("Altas") y una tabla que contendra los datos de forma mas permanente ("TAltas").

objHojita.Importar(txtRutaArchivo.Text, "Altas", "TAltas")

'Y la clase de control de BD, el metodo de importacion es este:


Sub Importar(ByVal excel, ByVal hoja, ByVal destino)

Try
'MyBase es el objeto para la conexion en profundo con la BD (trankis, funciona de maravilla)
MyBase.AbrirConexion()
Àqui empieza lo gordo. Esta linea de debajo, la variable connect, se supone que deberia contener la ruta del archivo y algo mas (no se el que, pero me han dicho que lo ponga asi, la ruta mas lo otro)
Connect = "'" + excel + "' 'Excel 8.0;HDR=Yes;IMEX=1;'"
'Y esta linea en un principio lo que hace es que pilla los datos, los mete en la tabla "destino" ("TAltas"), y luego copia los datos de la tabla destino en la tabla hoja ("Altas"). El caso es que falla.
MyBase.IniciarComando("INSERT INTO `" + hoja + "` SELECT * FROM `" + destino + "` IN `" + Connect + "`")
MyBase.InicioTransaccion()
MyBase.EjecutarComandoTR()
MyBase.AceptarTrasancion()
Catch ex As Exception
MessageBox.Show(ex.Message)
MyBase.RechazarTrasancion()
End Try
MyBase.CerrarConexion()
End Sub

Vale, asi lo he intentado hacer. Solucion que propongo: importar los datos de la hoja de calculo a la tabla destino ("TAltas") y luego ya si eso los copio en la otra.

En definitiva: no funciona como yo lo hago.
Asi que: ¿como hago para importar los datos de un excel a una tabla BD?

Solo necesito la sintaxis, llevarlo a .net ya me encargo yo.
Y lo siento si molesto a alguien poniendo este tema en esta zona del foro, es uqe no sabia si ponerlo en vb.net o en la zona sql.

Muchas gracias por su presencia y por sus aportaciones.
  #2 (permalink)  
Antiguo 17/05/2013, 11:03
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Pasar datos excel a una BD

Hola que tal, bueno no e manejado mucho MySQL, pero investiga si existe algo similar a Bulk Copy ( Que se usa en SQL ) el cual te copia un archivo a una tabla.

Puede ser que eso te sirva.

  #3 (permalink)  
Antiguo 20/05/2013, 03:34
 
Fecha de Ingreso: abril-2013
Mensajes: 37
Antigüedad: 11 años
Puntos: 1
Respuesta: Pasar datos excel a una BD

Hola.

Lamento tener que realizar esta peticion en la zona de programacion, pero esque segun las normas del foro no puedo realizar ya la pregunta como es debido en la zona de mysql (como ya la comence aqui).

BUeno, al final lo unico que necsito es saber la sintaxis (si, la sintaxis, no me sirve realizar importaciones mediante ms2 ni importaciones directas ni nada de eso, necesito saber la sintaxis) de mysql (estoy usando phpmyadmin para mas informacion) para importar los datos de un excel a una tabla.

Aqui les dejo la forma que estaba usando ultimamente:

LOAD DATA INFILE `C:\Users\Usuario1\Desktop\Archivoto.csv` INTO TABLE `tablaparaexcel` FIELDS TERMINATED BY `;` (ClientCode, NFactura)

El excel lo tuve que convertir a csv (separado por comas) para poder realizar la conversion.

Pero al ejecutar el asunto me salta un error:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`C:\Users\CBR20\Desktop\smol.csv` INTO TABLE `tablaexcel` FIELDS TERMINATED BY `' at line 1

Al parecer el error es en FIELDS TERMINATED BY `;`, para ser más esactos en el `;`, y eso que prove usando `,` , pero daba el mismo error.

¿Alguien puede ayudarme?
  #4 (permalink)  
Antiguo 20/05/2013, 07:18
 
Fecha de Ingreso: julio-2010
Mensajes: 77
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Pasar datos excel a una BD

Hey

Yo considero que es mas sencillo poner esta respuesta (considerando que serviría para PHP, C#, VB, etc).

Considero que lo mejor es hacer un SELECT a EXCEL y guardarlo en un DataTable de tu motor de código de servidor (PHO, .Net) y posteriormente hacer el insert registro por registro de manera NORMAL a MySQL o SQL o lo que quieras.

De esta forma tu código será flexible ante los diferentes motores de bases de datos.

Lo único que hay que saber es la cadena de conexión a EXCEL, la cual puede ser así:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\misdocumentos\archivo.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES";

Para cualquier info visiten la pagina de ConnectionStrings.com (Y)

Saludos!
  #5 (permalink)  
Antiguo 21/05/2013, 04:22
 
Fecha de Ingreso: abril-2013
Mensajes: 37
Antigüedad: 11 años
Puntos: 1
Respuesta: Pasar datos excel a una BD

Soy yo otra vez.

Creo que tendre que usar tu solucion candrade, pero resulta que ya tengo una cadena de conexion que es "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + "\Datos.mdb"
y es la que estoy usando en mi macroproyecto.

Podria utilizar otra cadena de conexion para hacer referencia a la misma base de datos?

Me explico: tengo mi cadena de conexion en mi clase de AccesoBD.vb, ok vale, y trabajo con ella para urgar en la base de datos (Datos.mdb) (hasta ahi bien), pero me gustaria (he pensado que quizas funcione, no lo se) que en otra clase (importarExcel.vb) tuviese otra cadena de conexion (la que tu has dicho) para SOLO importar los datos del excel a la base de datos.

¿Que os parece? ¿Se puede hacer?

Es que se me acaba de ocurrir y no tengo ni idea de si eso puede llegar a funcionar o hara que mi ordenador reviente (mis ideas suelen acabar con un olor a cable quemado en el ambiente, jaja).

¿Alguna sugerencia?

PD: ¿es cosa mia o siempre acabo las preguntas diciendo "¿Alguna sugerencia?"?
  #6 (permalink)  
Antiguo 21/05/2013, 08:03
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Pasar datos excel a una BD

Puedes crear tantas cadenas de connexión como quieras, apunten a un mismo sitio o a sitios diferentes :)
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 23/05/2013, 02:08
 
Fecha de Ingreso: abril-2013
Mensajes: 37
Antigüedad: 11 años
Puntos: 1
Respuesta: Pasar datos excel a una BD

Ok vale, lo he intentado, pero sigo sin saber como puedo pasar esos datos (no encuentro nada que valga para vb.net).

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:43.