Visual Basic - Copiar tablas desde una base Acces a una Sql

Life is soft - evento anual de software empresarial
 
Vista:

Copiar tablas desde una base Acces a una Sql

Publicado por Alvaro (85 intervenciones) el 02/07/2008 14:54:53
Hola muy buenas, querria saber si se pueden copiar todas las tablas(con todos sus datos) que tengo en una base de datos access a otra base de datos, pero esta otra es una base de datos SQL. He intentado hacerlo con dos conexiones una a la base de acces y otra a la base SQL y despues por cada tabla de la base acces haciento un recordset para consultar los datos y despues haciendo el insert en la base SQL de estos datos que he recuperado, lo que pasa es que tengo 150 tablas en la base de datos access y me va a llevar mucho tiempo, por eso queria se saben algun procedimiento mas corto y que no tenga que ir consultando una por una todas las tablas que tengo en la base de datos ya que me corre demasiado prisa teminar de pasar todos estos datos.

Muchas gracias.

Un saludo.
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:Copiar tablas desde una base Acces a una Sql

Publicado por garbacho (29 intervenciones) el 02/07/2008 15:58:09
No hay ningún procedimiento mas corto, tienes que ir consultando una por una todas las tablas.

Cuando me vi en la necesidad de pasar mis bases de datos Access a SQL me tuve que crear un programa que primero crea la bd SQL y después que comprobara los campos tipo y los convirtiera a formato SQL (ya que no son iguales en Acces y SQL). Ese fue el mayor problema (bueno, y el de convertir campos OLE), el resto es muy sencillo; solo con un INSERT dentro de un bucle de principio a fin del recordset (de cada una de las tablas Access) lo añadí a la las tablas de la BD SQL.

Para mostrar una barra de progreso, creé una rutina que contaba (RecordCount) los registros de todas las tablas de la BD Access y el resultado total se lo asigné a la propiedad Max de la barra de progreso y después, según iba copiando los registros de las tablas, iba incrementando el valor de la barra de progreso.
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:Copiar tablas desde una base Acces a una Sql

Publicado por pacopaz (173 intervenciones) el 02/07/2008 16:56:46
Existe una utilería en Access (desde 2000, por que no recuerdo el 97), que hace eso, además de pasar las relaciones y sus condiciones (cascadas, etc). La encuentras en el menú:
Herramientas | Utilerias de la base de datos | Asistente para convertir a SQL Server

En esta te preguntará en que servidor quieres que se pase tu BD, si quieres que se pase la estructura y además los datos y si lo quieres en una BD existente o en una nueva.
Luego de que termina, forma un reporte con los detalles de la conversión, por tabla.

También existe el procedimiento para que lo hagas por DTS.
Desde el Enterprise Manager de tu SQL Server, busca el menú:
Herramientas | Servicio de Transformación de Datos | Importar Datos...

Defines la conexión a tu base de datos en access, y listo.

Todo, sin programar y sólo añadiendo unos cuantos parámetros.

Espero que te sirva.

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

A traves de codigo visual basic

Publicado por alvaro (85 intervenciones) el 02/07/2008 17:02:05
Perdonar chicos, pero se me ha olvidado decir algo importante. Lo quiero hacer desde un programa en visual basic que estoy desarrollando. Es decir, cuando haga clic en un boton que me transfiera los datos de la base de datos acces a la de SQL. Me seria de muy gran ayuda todas soluciones que me pudieseis facilitar.

Muchas 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

A traves de codigo visual basic

Publicado por Alvaro (1 intervención) el 02/07/2008 18:07:36
ok, muchas gracias y perdona por no especificar que era a traves de codigo. Otra cosita:
Sabes como obtener el nombre una por una de todas las tablas que tengo en la base de datos acces??
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:A traves de codigo visual basic

Publicado por pacopaz (173 intervenciones) el 02/07/2008 19:42:05
Puedes comenzar con esto:

Tira un ListBox en una forma y usa este código:

Private Sub Form_Load()
Dim cn As ADODB.Connection
Dim rs As Recordset

Set cn = New ADODB.Connection
cn.Open "<<String de Conexión a tu base de datos>>"
Set rs = cn.OpenSchema(adSchemaTables)
If rs.RecordCount > 0 Then rs.MoveFirst
While Not rs.EOF
List1.AddItem rs.Fields("TABLE_NAME")
rs.MoveNext
Wend
End Sub

Esto enlistará todas las tablas que tengas en la base de datos.
Para más información acerca de la instriccuión OpenSchema, refierete a esta página:
http://support.microsoft.com/kb/186246/es

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:Copiar tablas desde una base Acces a una Sql

Publicado por garbacho (29 intervenciones) el 02/07/2008 22:41:03
Bueno, al final parece ser que vas a tener que hacer lo que te dije en un principio a pesar de las ¿soluciones? de estos "expertos".

Lo intentas según lo expliqué, que creo está muy claro, y las dudas las consultas.

En cuanto a la respuesta del "master" de arriba, no te va a servir de nada pues según te lo pone te la a "enlistar" todas las tablas de la base de datos incluidas las de sistema, debería ser así:

Set rsSchema = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "TABLE"))

para que solamente "enliste" las tablas de datos.

No me quiero extender más, y para estos pseudoexpertos UN SALUDO!
(con especial atención al "yo")
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:Copiar tablas desde una base Acces a una Sql

Publicado por pacopaz (173 intervenciones) el 03/07/2008 00:21:38
Ok, digamos que ocupas también las tablas de sistema definidas por access para que funcione tu base de datos y que son de uso exclusivo de access y no te sirven en ningún otro lado. En ese caso, tiene razón garbacho y requieres de todos esos parámetros (son dos, pero tienes que definir el array).
Luego, quizás necesites la definición de cada tabla y cada campo.
Esto te puede servir:
http://support.microsoft.com/kb/314378/es

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