Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/10/2009, 08:42
Avatar de marie_mar
marie_mar
 
Fecha de Ingreso: septiembre-2009
Mensajes: 26
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Pasar datos de una tabla en SQLServer a otra tabla en PostgreSQL

Hola a todos:
Ya revisé todo el foro buscando en otros temas y al parecer nadie ha presentado un problema similar al mío.
Hace un tiempo desarrollé una aplicación en Visual Basic que se conectaba por ADO a una base de datos remota en SQLServer, obtenía los datos que necesitaba de una tabla y llenaba otra tabla con los mismos campos en una bd de PostgreSQL.

El código (lo he recortado) básicamente es así:

'Creo los objetos
Set RSmfp = New ADODB.Recordset
Set RSrrhh = New ADODB.Recordset
Set RSup = New ADODB.Recordset

'Cargo la consulta de la tabla que tiene los datos en SQLServer (CPT_Empleados)
SQLp = ""
SQLp = "SELECT loscampos"
SQLp = SQLp + " FROM CPT_Empleados"

'Cargo el recordset con los datos de la consulta
With RSrrhh
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.ActiveConnection = ConRRHH
.Open SQLp, ConRRHH
End With

'Cargo la consulta de la tabla que voy a actualizar en PostgreSQL (trab)
SQLm = ""
SQLm = "SELECT loscampos"
SQLm = SQLm + " FROM trab"

'Cargo el recordset con los datos de la consulta
With RSmfp
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.ActiveConnection = ConEST
.Open SQLm, ConEST
End With

On Error GoTo MiError

RSrrhh.MoveFirst

While Not (RSrrhh.EOF)

criterio = ""
criterio = "ntar = '" & Trim((RSrrhh.Fields("Id_Empleado").Value)) & "'"

RSmfp.Find criterio, , , 1

If (RSmfp.EOF) Then
'No esta, hay que agregarlo nuevo
SQL = ""
SQL = "INSERT INTO trab (loscampos) VALUES ('" & _
Trim(RSrrhh.Fields("loscampos").Value) & "')"

RSup.LockType = adLockOptimistic
RSup.Open SQL, ConEST, adOpenStatic
End If

RSrrhh.MoveNext

Wend

O sea, cargo una consulta con los datos que necesito de la tabla de sqlserver, y con un ciclo While.....Wend, voy llenando los datos en la tabla postgresql.

El caso es que no tengo la más remota idea de como hacerlo en php.

Ya tengo los dos código de conexión que necesito y funcionan:
postgresql:
$conpg = pg_connect("host=192.168.152.57 port=5432 dbname='$_SESSION[bdest]' user='$_SESSION[usuario]' password='$_SESSION[password]'");
return $conne;

sqlserver:
$consql = mssql_connect("MDAEMON1","usrfastos","fastosusr");
mssql_select_db("RRHH_MFPv5",$consql);

Consulta a la tabla en sqlserver:
//Cargo los datos de la base de datos de personal en sqlserver
$sqlp = "";
$sqlp = mssql_query("SELECT CI, Nombre, Id_Empleado, FechaAlta, PrimerApellido, SegundoApellido, Chequera FROM CPT_Empleados");
$rowsqlp = mssql_fetch_array($sqlp ) or die(mssql_error());

Consulta que ejecuto para llenar los datos en postgresql:
$sqle = "";
$sqle = "INSERT INTO trab (nci, nomb, ntar, fec, apel, c_est) VALUES (" . ($rowsqlp[0]). ", " . ($rowsqlp[1]). "," . ($rowsqlp[2]). "," . ($rowsqlp[3], "mm/dd/yyyy"). "," . ($rowsqlp[4]). "," . ($rowsqlp[5]). "," . ($rowsqlp[6]). ")";
pg_query($conpg, $sqle) or die(pg_last_error());

Ahora, me he trabado completamente a la hora de recorrer los registros de la tabla en sqlserver e insertarlos en la tabla postgresql....

Alguien me puede ayudar?????

Saludos y gracias