Foros del Web » Programando para Internet » PHP »

importar de exel a MySQL

Estas en el tema de importar de exel a MySQL en el foro de PHP en Foros del Web. señores ayuda estoy intentando importar un archivo de exel.cvs pero me aparece este error You have an error in your SQL syntax; check the manual ...
  #1 (permalink)  
Antiguo 26/11/2015, 11:10
 
Fecha de Ingreso: octubre-2015
Ubicación: ciudad juarez
Mensajes: 90
Antigüedad: 8 años, 6 meses
Puntos: 1
Sonrisa importar de exel a MySQL

señores ayuda

estoy intentando importar un archivo de exel.cvs pero me aparece este error

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order, item,order_item, co ,schedule,status,catalog_number,style_number,item_ qua' at line 1

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload page</title>
<style type="text/css">
body {
    background: #E3F4FC;
    font: normal 14px/30px Helvetica, Arial, sans-serif;
    color: #2b2b2b;
}
a {
    color:#898989;
    font-size:14px;
    font-weight:bold;
    text-decoration:none;
}
a:hover {
    color:#CC0033;
}

h1 {
    font: bold 14px Helvetica, Arial, sans-serif;
    color: #CC0033;
}
h2 {
    font: bold 14px Helvetica, Arial, sans-serif;
    color: #898989;
}
#container {
    background: #CCC;
    margin: 100px auto;
    width: 945px;
}
#form             {padding: 20px 150px;}
#form input     {margin-bottom: 20px;}
</style>
</head>
<body>
<div id="container">
<div id="form">

<?php

$db 
mysql_connect("localhost""root""") or die("Could not connect.");

if(!
$db

    die(
"no db");

if(!
mysql_select_db("eaton",$db))

    die(
"No database selected.");
 
//Connect to Database

$deleterecords "TRUNCATE TABLE tablename"//empty the table of its current records
mysql_query($deleterecords);

//Upload File
if (isset($_POST['submit'])) {
    if (
is_uploaded_file($_FILES['filename']['tmp_name'])) {
        echo 
"<h1>" "File "$_FILES['filename']['name'] ." uploaded successfully." "</h1>";
        echo 
"<h2>Displaying contents:</h2>";
        
readfile($_FILES['filename']['tmp_name']);
    }

    
//Import uploaded file to Database
    
$handle fopen($_FILES['filename']['tmp_name'], "r");

    while ((
$data fgetcsv($handle1000",")) !== FALSE) {
        
$import="INSERT into info(management_load_line,suffix, order, item,order_item, co ,schedule,status,catalog_number,style_number,item_quantity_open,item_Extended_Amount,item_order_date,commit_ship_date,commit_ship_actual_date,commit_ship_original_date,commit_ship_reschedule_reason,commit_ship_reschedule_reason,commit_ship_reschedule_number,do_not_ship_b4_date,required_ship_date,ship_method,customer_number,cust_name,ship_addr_name,state,product_line)
        values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]','$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]','$data[20]','$data[21]','$data[22]','$data[23]','$data[24]''$data[25]')"
;

        
mysql_query($import) or die(mysql_error());
    }

    
fclose($handle);

    print 
"Import done";

    
//view upload form
}else {

    print 
"Upload new csv by browsing to file and clicking on Upload<br />\n";

    print 
"<form enctype='multipart/form-data' action='importar.php' method='post'>";

    print 
"File name to import:<br />\n";

    print 
"<input size='50' type='file' name='filename'><br />\n";

    print 
"<input type='submit' name='submit' value='Upload'></form>";

}

?>
  #2 (permalink)  
Antiguo 26/11/2015, 11:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: importar de exel a MySQL

Es posible que el problema sea el uso de nombres en inglés para los campos, dado que existen en MySQL ciertas palabras reservadas, como es el caso de ORDER...
Lo mejor es, si no vas a usar un orden de columnas diferente al que la tabla tiene, y la cantiadad de columnas de la tabla coincide con la de los datos, no pongas los nombres de las columnas.
Si necesitas ponerlas, encierra los nombres de las mismas entre acentos agudos (`):
Código PHP:
Ver original
  1. $import = "INSERT into info(
  2. `management_load_line`, `suffix`, `order`,  `item`, `order_item`, `co `, `schedule`,
  3. `status`, `catalog_number`, `style_number`, `item_quantity_open`,
  4. `item_Extended_Amount`, `item_order_date`, `commit_ship_date`, `commit_ship_actual_date`,
  5. `commit_ship_original_date`, `commit_ship_reschedule_reason`, `commit_ship_reschedule_reason`,
  6. `commit_ship_reschedule_number`, `do_not_ship_b4_date`, `required_ship_date`,
  7. `ship_method`, `customer_number`, `cust_name`, `ship_addr_name`, `state`, `product_line`)
  8. values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]','$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]','$data[20]','$data[21]','$data[22]','$data[23]','$data[24]''$data[25]')";

Nota: Lo que si noto es que el INSERT lo aplicas sobre una tabla diferente del TRUNCATE, y a esa nunca la llamas...
Código PHP:
Ver original
  1. $deleterecords = "TRUNCATE TABLE tablename";
¿No tienes un error en alguna parte?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/11/2015, 13:16
 
Fecha de Ingreso: octubre-2015
Ubicación: ciudad juarez
Mensajes: 90
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: importar de exel a MySQL

ya quedo solucionado ahora tengo otra pregunta como puedo hacer que los no me duplique los registos
  #4 (permalink)  
Antiguo 26/11/2015, 14:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: importar de exel a MySQL

Tendría que existir algún campo que actúe de discriminante, uno que se pueda usar como indice UNIQUE. Con eso simplemente usas "INSERT IGNORE INTO... " y omite cualquier dato donde esa clave se repita.
de lo contrario te convendría usar una tabla transaccional y crear un proceso que valide los datos a pasar a la tabla final.
Es lo que habitualmente se hace.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: exel, html, mysql, 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 07:51.