Tema: ob_flush()
Ver Mensaje Individual
  #16 (permalink)  
Antiguo 06/03/2003, 11:48
Avatar de Helbira
Helbira
 
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 5 meses
Puntos: 5
Avisé que era largo.

$consulta_count="select count(*) AS num_reg from ag_flamenco";
$consultaInicial="select FIRST ".global_PAG." cod_tipo, cod_via, cod_mun, nombre_actfla, descrip_actfla, fechaini_actfla,fechafin_actfla,periodo_actfla, direccion_actfla, numero_actfla, masdir_actfla, cp_actfla, telefono_actfla, fax_actfla, email_actfla, url_actfla, engperiodo_actfla, freperiodo_actfla, gerperiodo_actfla, japperiodo_actfla, engdescrip_actfla, fredescrip_actfla, gerdescrip_actfla, japdescrip_actfla, engmasdir_actfla, fremasdir_actfla, germasdir_actfla, japmasdir_actfla, engnombre_actfla, frenombre_actfla, gernombre_actfla, japnombre_actfla, rowid from ag_flamenco";// ORDER BY rowid";
$nom_tabla="agenda";
//$campos_insert="fk_tact_fla, fk_via, fk_mun, nombre_act, descrip_act, fechaini_act, fechafin_act, periodo_act, direccion_act, numero_act, masdir_act, cp_act, tlf1_act, fax_act, email1_act, url_act, coment_act, engperiodo_act, freperiodo_act, gerperiodo_act, japperiodo_act, engdescrip_act, fredescrip_act, gerdescrip_act, japdescrip_act, engcoment_act, frecoment_act, japcoment_act, gercoment_act, engmasdir_act, fremasdir_act, germasdir_act, japmasdir_act, engnombre_act, frenombre_act, gernombre_act, japnombre_act";
$campos_insert="fk_tact_fla, fk_via, fk_mun, nombre_act, descrip_act, fechaini_act,fechafin_act,periodo_act, direccion_act, numero_act, masdir_act, cp_act, tlf1_act, fax_act, email1_act, url_act, engperiodo_act, freperiodo_act, gerperiodo_act, japperiodo_act, engdescrip_act, fredescrip_act, gerdescrip_act, japdescrip_act, engmasdir_act, fremasdir_act, germasdir_act, japmasdir_act, engnombre_act, frenombre_act, gernombre_act, japnombre_act";
$pk_nueva ="pk_act";
$fk_antigua="cod_tipo";
$nombreFichero="tipo_act_fla.txt";
$camposBlob="descrip_actfla,engdescrip_actfla,fred escrip_actfla,gerdescrip_actfla,japdescrip_actfla" ;
$camposFecha="fechaini_actfla,fechafin_actfla";

function importaDatosConArray($consulta_count,$consultaInic ial,$nom_tabla,$campos_insert,$pk_nueva,$fk_antigu a,$nombreFichero,$camposBlob,$camposFecha) {
// $LOGFILE="log/".$nom_tabla.".log";
$TXTFILE="relacionTablas/".$nombreFichero;
if ( !($camposBlob == "") ) {
$camposBlob = str_replace ( ", ", ", ", $camposBlob);
//Array con los nombres de los campos tipo blob de la tabla antigua
$arrayBlob = explode (', ', $camposBlob);
}

if ( !($camposFecha == "") ) {
$camposFecha = str_replace ( ", ", ", ", $camposFecha);
//Array con los nombres de los campos que contienen una fecha (aaaa-mm-dd) de la tabla antigua
$arrayFecha = explode (', ', $camposFecha);
}

//Array asociativo que almacenará la correspondencia entre tipos y tipo_act_tur
$myArray = fichero2Array ($TXTFILE);

//Inicializamos puntero de consultas
$fila=0;
//Almacena el número de inserciones que no han dado error
$num_rows_insert=0;

//Conexión con la BD
$conn=pg_pconnect_("host='".global_DBSERVER."' port='5432' user='".global_DBUSER."' password='".global_DBPASSWD."' dbname='".global_DBNAME."'");
$conn_turismo=pg_pconnect2_("host='".global_DBSERV ER."' port='5432' user='".global_DBUSER."' password='".global_DBPASSWD."' dbname='".global_DBNAMETURISMO."'", "dbturismo");

$result_count=pg_exec_($conn,$consulta_count);
if( !$result_count )
{
print("<br>No se ha podido calcular el numero de registros<BR>\n");

//print Informix error message
print("<br>".ifx_error() . "<BR>\n");
print("<br>".ifx_errormsg() . "<BR>\n");
print("-------------------------------------------------------------------------<br>");
} else {
$row=pg_Fetch_Array_($result_count,$fila);
$num_rows=(int)$row["num_reg"];
}
echo "<br>".$num_rows." registros a ejecutar";
ifx_free_result($result_count);

/*
$types = ifx_fieldtypes ($result);
if (! isset ($types)) {
echo "ERROR en la consulta de tipos<br>";
}
for ($i=0; $i<count($types); $i++) {
$fname = key($types);
printf("%s : type = %s<br>\n", $fname, $types[$fname]);
next($types);
}
*/

ifx_textasvarchar(1);
$inicio=1;
while ($num_rows>0) {
if ($inicio==1) { // Es la primera consulta que ejecutamos
$consulta=$consultaInicial." ORDER BY rowid";
$inicio=0;
} else {
$consulta=$consultaInicial." WHERE rowid>".$row_id." ORDER BY rowid";
}
echo "<br>".$consulta;
$result=pg_exec_($conn,$consulta);

while( $row=pg_Fetch_Array_($result,$fila) ) {
$row_id=$row["rowid"];
echo "<br><br>".$row_id." fila";
//iniciamos la sentencia INSERT
$sentenciaINSERT = "INSERT INTO ".$nom_tabla." (".$campos_insert.") VALUES (";
//recorremos los campos de la consulta SELECT y añadimos su valores a la sentencia INSERT
for(reset($row); $fieldname=key($row); next($row)) {
$fieldvalue=$row[$fieldname];
if ( !($fieldname == "rowid") ) {
if ( !($fieldname == $fk_antigua) ) {
if( !(enArray($arrayBlob,$fieldname)) ) {
if( !enArray($arrayFecha,$fieldname) ) {
$fieldvalue=addslashes(htmlentities(trim($fieldval ue)));
$fieldvalue=mysql_escape_string($fieldvalue);
//Caracteres problemáticos en las consultas
$fieldvalue=str_replace("“", "&quot;", $fieldvalue);
$fieldvalue=str_replace("”", "&quot;", $fieldvalue);
$fieldvalue=str_replace("\"", "&quot;", $fieldvalue);
$fieldvalue=str_replace("–", "-", $fieldvalue);
//Construimos la sentencia INSERT INTO
$sentenciaINSERT = $sentenciaINSERT."'".$fieldvalue."', ";
} else {
//Transformamos la cadena fecha 'aaaa-mm-dd' en 'dd/mm/aaaa'
//Toma la fecha en formato ISO (AAAA-MM-DD) y la imprime en formato DD/MM/AAAA
list( $anyo, $mes, $dia ) = split( '[/.-]', $fieldvalue );
if (trim($dia)=="" || trim($mes) =="" || trim($anyo)=="") {
$sentenciaINSERT = $sentenciaINSERT."NULL,";
} else {
$sentenciaINSERT = $sentenciaINSERT."'".trim($dia)."/".trim($mes)."/".trim($anyo)."', ";
}
}
} else {
// crea identificadores de blob para una columna de tipo text y lo almacena en un array de valores blob
$fieldvalue=addslashes(htmlentities(trim($fieldval ue)));
$fieldvalue=mysql_escape_string($fieldvalue);
$fieldvalue=str_replace("“", "&quot;", $fieldvalue);
$fieldvalue=str_replace("”", "&quot;", $fieldvalue);
$fieldvalue=str_replace("\"", "&quot;", $fieldvalue);
$fieldvalue=str_replace("–", "-", $fieldvalue);
$blob[] = ifx_create_blob(0, 0, $fieldvalue);
// seguimos construyendo la consulta
$sentenciaINSERT = $sentenciaINSERT."?, ";
}

} else {
$sentenciaINSERT = $sentenciaINSERT.$myArray["$fieldvalue"].", ";
}
}
}
//suprimimos la última ', '
$sentenciaINSERT = substr($sentenciaINSERT,0,strlen($sentenciaINSERT)-1);
//finalizamos la sentencia INSERT
$sentenciaINSERT = $sentenciaINSERT.");";
//guardamos en el archivo de log la sentencia INSERT que se va a ejecutar
// log_Error($LOGFILE,"$sentenciaINSERT");
//ejecutamos la sentencia INSERT generada
echo "<br>".$num_reg." ".$sentenciaINSERT;
echo "<br>".$row["nombre_actfla"];

// if( !($result_insert = ifx_query($sentenciaINSERT, $conn_turismo)) )
if( !($result_insert = ifx_query($sentenciaINSERT, $conn_turismo, $blob)) )
{
print("<br>No se ha podido insertar un registro<BR>\n");

//print Informix error message
print("<br>".ifx_error() . "<BR>\n");
print("<br>".ifx_errormsg() . "<BR>\n");
print("--------------------------------------------------------------------");
} else {
$num_rows_insert++;
print "Registro insertado";
}
ifx_free_result($result_insert);
$fila++;
$num_rows--;
echo "<br>".$num_rows." filas quedan";
}
ifx_free_result($result);

pg_close_($conn);
pg_close_($conn_turismo);
$conn=pg_pconnect_("host='".global_DBSERVER."' port='5432' user='".global_DBUSER."' password='".global_DBPASSWD."' dbname='".global_DBNAME."'");
$conn_turismo=pg_pconnect2_("host='".global_DBSERV ER."' port='5432' user='".global_DBUSER."' password='".global_DBPASSWD."' dbname='".global_DBNAMETURISMO."'", "dbturismo");

ob_flush();
$fila=0;
}
pg_close_($conn);
pg_close_($conn_turismo);
echo "<br><br>".$num_rows_insert." registros insertados";
}
importaDatosConArray($consulta_count,$consultaInic ial,$nom_tabla,$campos_insert,$pk_nueva,$fk_antigu a,$nombreFichero,$camposBlob,$camposFecha);

Última edición por Helbira; 06/03/2003 a las 11:52