chicaker
Usuario Novato
Usuario Novato

Hola que tal soy nueva, me gustaria saber como leer un archivo csv y luego insertar los datos en una tabla de mi base de datos.

Al ejecutar el script a continuación me muestra el siguiente mensaje: ERROR: la sintaxis de entrada no es válida para integer: «» LINE 1: ...ueba (id_prueba,montoneto,montodisponible) VALUES ('','','') ^

<?php
$conexion=pg_connect("host=localhost port=5432 user=postgres password=prestaciones dbname=prueba");
if(isset($_POST['submit']))
{
$filename=$_POST['filename'];
$handle = fopen("$filename", "r");
while (($data = fgetcsv($handle, 18192, ";")) !== FALSE)
{

$import="INSERT INTO prueba (id_prueba,montoneto,montodisponible) VALUES ('$data[0]','$data[1]','$data[2]')";
pg_query($import) or die(pg_last_error());
var_dump($data);

}
fclose($handle);
print "Import done";
}
else
{

print "<form action='enviar_csv.php' method='post' >";
print "Type file name <strong class='highlight'>to</strong> import:<br>";

print "<input type='file' name='filename' size='20'><br>";
print "<input type='submit' name='submit' value='submit'></form>";
}
?>

El código me funciona de maravilla si guardo el archivo csv en mi carpeta donde tengo el script. La idea es que el usuario pueda seleccionar el archivo donde lo tenga guardado en su pc. Espero me puedan ayudar

Avatar Image
@man / @woman
@man / @woman

$data[0]','$data[1]','$data[2]'

¿Tienen los datos que pretendes que tengan?

Compruebalo con unos echo

chicaker
Usuario Novato
Usuario Novato

Los datos son los que se estan recorriendo con el while, en archivo csv hay tres columnas, $data[0] serian los datos de la priemera columna, $data[1] los de la segunda columna y $data[2] lo de las tercera columna. Como dije el script me funciona de maravilla cuando el archivo csv esta en la guardado en la carpeta donde esta el script.

Lo que yo necesito es que lea el archivo cuando este guardado en mis documentos o en mi escritorio.

Avatar Image
@man / @woman
@man / @woman
Escrito originalmente por @chicaker

El código me funciona de maravilla si guardo el archivo csv en mi carpeta donde tengo el script. La idea es que el usuario pueda seleccionar el archivo donde lo tenga guardado en su pc. Espero me puedan ayudar

En el formulario debes poner un control input type file (botón para seleccionar archivos), luego con el mismo formulario deberás hacer el upload del archivo al servidor y procesarlo allí.

(solo si el visitante tiene un servidor web instalado, con Php y PG podrás hacer que lo procese en local)

chicaker
Usuario Novato
Usuario Novato

Hola que tal ya logre subir el archivo al servidor lo guardo en una carpeta llamada files. Cuando leo el archivo que esta guardado en la carpeta file e insertarlo en el servidor me da el siguiente error ERROR: la sintaxis de entrada no es válida para integer: «» LINE 1: ...monto (id_monto,montoneto,montodisponible) VALUES ('','','') ^

Pero cuando guardo el archivo fuera de la carpeta files me funciona la inserción de los datos en la base de datos.

Avatar Image
@man / @woman
@man / @woman

Algunos tips para tener en cuenta:

- nombre de archivo: en Linux no es lo mismo que en Windows, en Linux quita o cambia espacios y caracteres gráficos o de puntuación por líneas - o _ (por ejemplo).

- SQL (nombres de campo): con espacios y otros caracteres, mejor los encierras con comillas simples o dobles (segun el limitador de la sentencia SQL).

- SQL (datos): escapa los datos (y si incluye código HTML, convierte o codifica esas entidades.

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
No se han encontrado temas similares