Foros del Web » Programando para Internet » PHP »

load data local infile

Estas en el tema de load data local infile en el foro de PHP en Foros del Web. Hola desarrolladores, estoy cargando un archivo a mi servidor pero me presenta un problema la cosa aqui esq yo vengo trabajando en Ubuntu pero cambie ...
  #1 (permalink)  
Antiguo 13/04/2011, 14:18
 
Fecha de Ingreso: noviembre-2010
Mensajes: 46
Antigüedad: 13 años, 5 meses
Puntos: 5
load data local infile

Hola desarrolladores, estoy cargando un archivo a mi servidor pero me presenta un problema la cosa aqui esq yo vengo trabajando en Ubuntu pero cambie mi computadora donde tengo alojado el sistema a Windows no se si tenga algo que ver.

Lo que hago con el archivo es crear una copia de el en una carpeta llamada uploads y de alli, hacer el load data, les dejo mi codigo porfavor alguien ayudeme

Código PHP:


<?php
session_start
();
require(
'conexiones/conexion.php');

// Configuración
$folder "uploads\\\\"// Carpeta a la que queremos subir los archivos
$maxlimit 50000000// Máximo límite de tamaño (en bits)
$allowed_ext ="csv,txt"// Extensiones permitidas (usad una coma para separarlas)
$overwrite "yes"// Permitir sobreescritura? (yes/no)

$match ""
$filesize $_FILES['userfile']['size']; // toma el tamaño del archivo
$filename strtolower($_FILES['userfile']['name']); // toma el nombre del archivo y lo pasa a minúsculas
echo "<br>File name ".$filename;
echo 
"<br>folder ".$folder;

if(!
$filename || $filename==""){ // mira si no se ha seleccionado ningún archivo
   
$error "- Ningún archivo selecccionado para subir.<br>";
}elseif(
file_exists($folder.$filename) && $overwrite=="no"){ // comprueba si el archivo existe ya
   
@unlink($_GET[$folder.$filename]); 
   
//$error = "- El archivo <b>$filename</b> ya existe<br>";
}

// comprobar tamaño de archivo
if($filesize 1){ // el archivo está vacío
   
$error .= "- Archivo vacío.<br>";
}elseif(
$filesize $maxlimit){ // el archivo supera el máximo
   
$error .= "- Este archivo supera el máximo tamaño permitido.<br>";
}

$file_ext preg_split("/\./",$filename); // aquí no tengo claro lo que hace xD
$allowed_ext preg_split("/\,/",$allowed_ext); // ídem, algo con las extensiones
foreach($allowed_ext as $ext){
   if(
$ext==$file_ext[1]) $match "1"// Permite el archivo
}

// Extensión no permitida
if(!$match){
   
$error .= "- Este tipo de archivo no está permitido: $filename<br>";
}

if(@
$error){
   print 
"Se ha producido el siguiente error al subir el archivo:<br> $error"// Muestra los errores
}
else{

$ubicacion=$folder.$filename;

   if(
move_uploaded_file($_FILES['userfile']['tmp_name'], $ubicacion)){ // Finalmente sube el archivo
    
    
$query="load data local infile '$ubicacion' into table Comedor_temporal fields terminated by ',' enclosed by '\"' lines terminated by '\n' IGNORE 1 LINES (Id_empleado, Fecha);";
                
                 
                
mysql_query($query) or die(mysql_error());
    
        
        
//header("location:PEOdocumentos.php");
    
print "<b>$filename</b> se ha subido correctamente!"//el mensaje que saldra cuando el archivo este subido

  
}else{
          
      print 
"Error! Puede que el tamaño supere el máximo permitido por el servidor. Inténtelo de nuevo."// Otro error
   
}
}

echo 
"<form>";
echo      
"<INPUT TYPE='button' VALUE='Atrás' onClick='history.back()'>";
echo 
"</form>";

?>
  #2 (permalink)  
Antiguo 13/04/2011, 14:32
 
Fecha de Ingreso: noviembre-2010
Mensajes: 46
Antigüedad: 13 años, 5 meses
Puntos: 5
Respuesta: load data local infile

ah algo mas este es el error que me aparece


File 'uploads\prueba ale comedor 4-8 abr 2011.csv' not found (Errcode: 2)
  #3 (permalink)  
Antiguo 09/06/2011, 12:52
 
Fecha de Ingreso: junio-2011
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: load data local infile

te voy a coloborar

el error es porque cuando tu le das load data local infile el programa busca el archivo de txt en esta direccion C:\\appserv\mysql\bin\archivo.txt

si no lo colocas en esta direccion no lo va ha encontrar

buena Suerte.:contento
:
  #4 (permalink)  
Antiguo 09/06/2011, 14:03
 
Fecha de Ingreso: junio-2011
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: load data local infile

Te sugiero que hagas un boton de examinar para buscar el archivo.sql, asi te evitas de equivocarte de direccion y es mas practico
Este codigo es para hacer una restauracion de la base de datos cuando ya tienes una copia de seguridad en un archivo sql.
ejemplo:


Código HTML:
//-----------pagina 1:
<html>
<form name="form1" method="post" action="pagina2.php">  

 
<div align="left">
<table width="550" border="0" align="left">
<tr>
<th width="287" class="Estilo4" scope="row"><div align="left">Importar Archivo   </div></th>
<td width="253" class="Estilo4"><input type="file" name="archivo"></td>
</tr>
<tr>

<th colspan="2" class="Estilo4" scope="row"><input type="submit" name="button" id="button" value="Importar"></th>
</tr>
</table>
</div>
<p align="left" class="Estilo4">&nbsp;</p>
<p align="left" class="Estilo4">&nbsp;</p>
<p class="Estilo4">--------------------------------------------------------------------------------------------------------------------</p>
</FORM>
</html> 
Código PHP:
//-------------pagina 2:
<?
include ("conectar.php"); //aqui me conecto a mysql
/*
$Usuario="root"; 
$Password="contraseña";
$Servidor="localhost"; 
$BaseDeDatos="nombre de la base de datos";
*/
//cojes el archivo asi:
$nombre=$_POST["archivo"];
$archivo_file="$nombre";

//asi cojes el archivo y esta listo para darle el uso que quieras
//importo archivo de php a mysql

$sistema="show variables where variable_name= 'basedir'";
$rs_sistema=mysql_query($sistema);
$DirBase=mysql_result($rs_sistema,0,"value");
$primero=substr($DirBase,0,1);
if (
$primero=="/") {
    
$DirBase="mysql";
} else {
    
$DirBase=$DirBase."\bin\mysql";
}

$executa "$DirBase -h $Servidor -u $Usuario --password=$Password  $BaseDeDatos < $archivo_file";

system($executa$resultado);


if (
$resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; } 


if (
$resultado) {
    
$mensaje="ERROR. La copia de seguridad no se ha restaurado completamente.";
    
$cabecera2="COPIA DE SEGURIDAD NO RESTAURADA";
} else {
    
$mensaje="La copia de seguridad se ha restaurado correctamente."
    
$cabecera2="COPIA DE SEGURIDAD RESTAURADA";
}

?>
Código HTML:
<table class="fuente8" width="98%" cellspacing=0 cellpadding=3 border=0>
<tr>
<td width="15%">Mensaje</td>
<td width="85%" colspan="2" class="mensaje"><?php echo $mensaje;?></td>
</tr>
<tr>
<td width="15%">Fecha</td>
<td width="85%" colspan="2"><?php echo $fecha?></td>
</tr>
<tr>
<td width="15%">Hora</td>
<td width="85%" colspan="2"><?php echo $hora?></td>
</tr>							
</table> 

Última edición por ochoacastro; 09/06/2011 a las 15:30 Razón: correcion

Etiquetas: data, infile, load, local
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:45.