Autor Tema: INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)  (Leído 10386 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« en: Agosto 21, 2014, 07:29:20 pm »
Hola.
Necesito hacer una inserción de datos en una tabla de una base de datos SQLServer 2005 partiendo de una consulta en una tabla de una base de datos MySQL. De manera burda ejemplifico lo que intento hacer:
Código: (SQL) [Seleccionar]
INSERT INTO tablasqlserver (campo1, campo2, campo3) (SELECT campo1, campo2, campo3 FROM tablamysql)¿Es posible hacerlo?
Muchas gracias.

Jerónimo

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #1 en: Agosto 21, 2014, 08:39:17 pm »
Hola.
Necesito hacer una inserción de datos en una tabla de una base de datos SQLServer 2005 partiendo de una consulta en una tabla de una base de datos MySQL. De manera burda ejemplifico lo que intento hacer:
Código: (SQL) [Seleccionar]
INSERT INTO tablasqlserver (campo1, campo2, campo3) (SELECT campo1, campo2, campo3 FROM tablamysql)¿Es posible hacerlo?
Muchas gracias.

Jerónimo

Buenas,
Primero que nada estamos hablando de dos gestores diferentes, es decir, desde sql server no veo las tablas de mysql y tampoco viseversa... Por lo cual no se puede... Mi recomendación es, ejecutas la consulta en MySQL, exporta los valores a Excel y luego copia y pegalos en SQL Server....

Saludos
Miguel Núñez.

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #2 en: Agosto 21, 2014, 08:50:33 pm »
Utiliza los asistentes de SQL server para importar datos desde origenes ODBC (y ahi buscas MySQL, debes tener el conector previamente instalado)

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #3 en: Agosto 21, 2014, 08:53:17 pm »
Claro, iba a hacer eso, o poner los datos extraídos en un archivo de texto plano para luego tomarlos y ponerlos dentro de la base de datos SQL Server. Pero no sabía si había manera de relacionar dos bases de datos de motores diferentes.
Lo que tengo pensado es poner lo siguiente en un archivo de texto:
Código: (SQL) [Seleccionar]
(valorA1, valorA2, valorA3), (valorB1, valorB2, valorB3)...Luego tomaría el contenido del archivo de texto en una variable, por ejemplo, Datos, para finalizar haciendo esto:
Código: (VB) [Seleccionar]
"INSERT INTO tablasqlserver (campo1, campo2, campo3) VALUES " & Datos¿Sabés si hay alguna limitación en cuanto a la cantidad de registros que se puedan insertar en una instrucción así?
Muchas gracias.

Jerónimo

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #4 en: Agosto 21, 2014, 08:55:04 pm »
Raul338: el problema es que no tengo acceso a la base de datos en sí, porque no es mía (la de MySQL sí lo es). Solo me hicieron un usuario con permisos para poder insertar datos, consultar y alguna otra cuestión sencilla.
Muchas gracias.

Jerónimo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #5 en: Agosto 21, 2014, 09:00:04 pm »
Yo usaria una de estas dos opciones.

1.- En VB6 hago las dos conexiones. Con un rs.db1 leo de un motor y con rs.db2 inserto en el otro motor, sin necesidad de pasar por grillas ni nada, todo en memoria.

o'

2.- Usar el ESF Database Convert y con ella pasar esa sola tabla del motor X al motor Y y fin.

Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #6 en: Agosto 21, 2014, 09:09:46 pm »
Yván: En tu sugerencia 1, ¿cómo decís que pase los datos de una bd a la otra? ¿Recorriendo el rs.db1 e insertando en db2 por cada iteración? ¿Recorriendo el rs.db1 y guardando los datos en alguna variable para luego insertar todos los datos "de un saque" en la db2? ¿Otra?
La opción 2 casi la descartaría, aunque no conozco bien qué es el ESF Database Convert, porque me huele (reitero que no lo conozco) que es un procedimiento que sería engorroso automatizar y ejecutar en forma habitual. ¿Es así?
Muchas gracias.

Jerónimo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #7 en: Agosto 21, 2014, 09:28:12 pm »
1.- Si, me referia a un insert por iteracion, naturalmente con el commit al final.

2.- Al contrario el ESF convert es mas rapido , alli en mi blog hice una demo sobre eso.  No es un software free, por tanto esa pregunta que me quieres (en) hacer por inbox.
Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #8 en: Agosto 21, 2014, 09:41:41 pm »
1) Es que pueden ser 8000 registros. Preferiría ver si se puede hacer en un solo paso. Si no, en última instancia, lo haría así.
2) Voy a ver el video en un ratito y seguramente te mande un MP.
Muchas gracias.

Jerónimo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #9 en: Agosto 21, 2014, 09:51:04 pm »
8000?... pense que era 800,000 como para preocuparnos jeje. Papa, 8000 no es nada, corren al toque encima si el insert no tiene calculos previos, leer y grabar los 8000 lo hace en menos de lo que piensa cantar un gallo.
Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #10 en: Agosto 21, 2014, 10:37:19 pm »
¡Excelente!
Mañana voy a probar así, entonces.
¡Muchas gracias a todos!

Jerónimo

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #11 en: Agosto 22, 2014, 12:47:17 am »
Estimado Jeronimo
 
A tú pregunta, la respuesta es SI es posible.
 
A partir de Microsoft SQL Server 2005, en adelante, se de dispone del concepto de Servidores Vinculados lo cual te permite agregar (vincular) una base de datos externa, incluso de un manejador de base de datos distinto a Microsoft SQL Server (MySQL, Oracle, etc.) a Microsoft SQL Server haciéndolo accesible, con esto puedo hacer todo tipo de consultas tipo Transac SQL.
 
Este es un ejemplo de un sentencia SQL para servidores vinculados
Código: [Seleccionar]
select * from openquery (LINKED_MYSQL,'select * from MiTabla')
Aquí te dejo un paso a paso para que puedas tener tú primer ServidorVinculado: http://1drv.ms/1ACWVas
 
Saludos desde algún lugar de Lima-Perú
Saludos, desde algún lugar de Lima-Perú

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #12 en: Agosto 22, 2014, 02:02:56 am »
Ah mira que interesante, desconocía ese método, buen dato Albertomi como siempre.


Saludos
Me encuentras en YAcosta.com

Jeronimo

  • Gigabyte
  • ****
  • Mensajes: 402
  • Reputación: +33/-2
    • Ver Perfil
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #13 en: Agosto 22, 2014, 08:21:22 am »
Qué bueno está eso, realmente muy interesante.
Lamentablemente no puedo ponerlo en práctica porque no tengo acceso al servidor (es de otra empresa), solo crearon un usuario con permisos muy limitados para que inserte datos desde afuera. Pero seguramente más adelante se avance sobre ese terreno.
Muchas gracias.

Jerónimo

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:INSERT INTO SQLSERVER2005 (SELECT * FROM MYSQL)
« Respuesta #14 en: Agosto 22, 2014, 02:36:23 pm »
Estimado Jeronimo
 
A tú pregunta, la respuesta es SI es posible.
 
A partir de Microsoft SQL Server 2005, en adelante, se de dispone del concepto de Servidores Vinculados lo cual te permite agregar (vincular) una base de datos externa, incluso de un manejador de base de datos distinto a Microsoft SQL Server (MySQL, Oracle, etc.) a Microsoft SQL Server haciéndolo accesible, con esto puedo hacer todo tipo de consultas tipo Transac SQL.
 
Este es un ejemplo de un sentencia SQL para servidores vinculados
Código: [Seleccionar]
select * from openquery (LINKED_MYSQL,'select * from MiTabla')
Aquí te dejo un paso a paso para que puedas tener tú primer ServidorVinculado: http://1drv.ms/1ACWVas
 
Saludos desde algún lugar de Lima-Perú

Interesante, pensé que solo era posible en 2008R2...

Excelente dato Albertomi...!

Un puntacho por eso...!
Miguel Núñez.