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

Insert Into con Select = De ODBC a Sql Server

Estas en el tema de Insert Into con Select = De ODBC a Sql Server en el foro de .NET en Foros del Web. Hola tengo una conexión con ODBC a una base de Cobol string ConnStrCobol = "DSN=XXXdata;UID=sdasd;PWD=;server=192.168.0.1 10"; y otra a una base de datos en SQL ...
  #1 (permalink)  
Antiguo 16/08/2010, 13:05
Avatar de CieloEterno  
Fecha de Ingreso: marzo-2006
Ubicación: México
Mensajes: 52
Antigüedad: 18 años, 2 meses
Puntos: 0
Exclamación Insert Into con Select = De ODBC a Sql Server

Hola tengo una conexión con ODBC a una base de Cobol

string ConnStrCobol = "DSN=XXXdata;UID=sdasd;PWD=;server=192.168.0.1 10";

y otra a una base de datos en SQL Server

string ConnStrSQL = "Data Source=192.168.0.105;user=yop;password=dlkjfkd;DAT ABASE=Reps_Test;"

Actualmente la aplicación, consulta los datos en cobol, lo hace pasar por un ciclo para la inserción de registro por registro, son bastantes tablas y millones de registros.

Las tablas en cobol tiene más de 500 campos, así que estoy usando un select *

consultaCobol = "SELECT * FROM " + lineaTabla;


Habrá alguna manera de hacer la ejecución de un insert into con select entre estas bases?

string consulta = "Insert into " + tablaSQL + " values " + consultaCobol;

Y cómo debería colocarse el código de ejecución del query?

He estado buscando, y lo más que he hallado es de un chico llamado Antonio, pero no sé como emularlo en C#

Código:
Autor: 	
 antonio	 2.744 
Fecha: 	 16/11/2008 18:19:48
  Asunto: 	 RE:INSERT INTO ENTRE DOS BASES DE DATOS DIFERENTES
vale ya tengo la solucion , aqui dejo dos ejemplos uno de insert into y otro de update para que al que le haga falta se haga una idea. 
Saludos.: 
Dim adodb5 As ADODB.Connection 

adodb5 = New ADODB.Connection 

adodb5.Open("PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("CGI-BIN/CARRERAS/" & Session("BASEDATOS"))) 

adodb5.Execute("insert into inscritos IN '' [;DATABASE=" & Server.MapPath("CGI-BIN/panel1.mdb") & "] select cod_cor , (lapoblacion) as nom_pob, (elclub) as nom_eq , nom_cor,dni_cor, carrera,procedencia, sex_cor,local_sn,minus_sn, socio_sn,federado,email,fna_cor, cat_cor,dom_cor, pob_cor, cantidad, chip, tiempoedicionanterior, (clu_cor) as cod_eq from corredor WHERE carrera='" & Session("usuario") & "'" & " and dni_cor not in (SELECT dni_cor FROM INSCRITOS IN '' [;DATABASE=" & Server.MapPath("CGI-BIN/PANEL1.MDB" & "] where carrera='" & Session("usuario") & "'" & ")")) 

adodb5.Close() 

Dim adodb6 As ADODB.Connection 

adodb6 = New ADODB.Connection 

Dim RST As ADODB.Recordset 

RST = New ADODB.Recordset 

adodb6.Open("PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("CGI-BIN/carreras/") & Session("BASEDATOS")) 

adodb6.Execute("UPDATE([corredor])INNER JOIN [;Database=" & Server.MapPath("cgi-bin/panel1.mdb") & "].[inscritos] ON [inscritos].dni_cor = [corredor].dni_cor SET [inscritos].nom_cor = [corredor].nom_cor WHERE([inscritos].dni_cor = [corredor].dni_cor)")
Alguna idea?
__________________
Aquel que no tiene nada por lo cual morir, no tiene nada por que vivir
  #2 (permalink)  
Antiguo 19/08/2010, 09:34
 
Fecha de Ingreso: julio-2010
Mensajes: 77
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Insert Into con Select = De ODBC a Sql Server

mmmmm mira una vez tuve un proyecto parecido.
Pero no entre bases de diferentes Gestores. Pero te explico a como yo lo hice:

1.- Tu tabla de Cobol guardalo en un DataSet por ejemplo llamado tblCobol
2.- Despues en el query de SQL Server pones: INSERT INTO 'tabla' SELECT * FROM " & tblCobol.Tables(0).Select("id = 123")

pero solo podras de registro en registro asi que te recomiendo hacerlo dentro de un ciclo.
Lo que va en donde Select es solo la condion ... osea lo que hay en el WHERE.

=)

Etiquetas: insertinto, odbc, select, 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




La zona horaria es GMT -6. Ahora son las 16:39.