Script PHP para importar datos CSV en mysql

Este es un simple script que le permitirá importar datos CSV en su base de datos. Esto es muy útil, ya que basta con editar los campos apropiados, debe enviarlo junto con el archivo csv y lo llaman de la web y que se encargará del resto.

Le permite especificar el delimitador en este archivo csv, si se trata de una coma, una pestaña, etc También permite elegir el separador de línea, le permite guardar los resultados en un archivo (conocido como volcado de datos SQL).

También le permite incluir un campo vacío en el principio de cada fila, lo que suele ser un incremento automático clave entera primaria.

Este script es muy útil sobre todo si usted no tiene phpmyadmin, o no quieren la molestia de entrar y prefieren una solución de unos pocos clics, o simplemente son un tipo de comandos.
Sólo asegúrese de que la tabla ya está creada antes de tratar de volcar los datos.
Por favor envíe sus comentarios si tienes cualquier informe de error.


Descargar archivo aquí

134 Comentarios

Jake 25 de febrero 2007 a ​​las 6:31 AM

Muy útil, gracias.

S. Martínez 22 de febrero 2007 a ​​las 24:17

Yo suelo usar phpmyadmin, pero cierto, en caso de que uno no lo tiene instalado, y no tiene acceso a la shell (como la mayoría de los proveedores de hosting compartido), esto puede ser muy útil.

Len Lulow 28 de febrero 2007 a ​​las 20:11

Muchas gracias esta guardar un montón de tiempo! Script de Niza.

[...] Pues bien, hoy quiero presentarles otro método para obtener el archivo CSV en sql, utilizando el código PHP. Para esta pieza de código, todo el crédito va a la leyenda. Usted necesita asegurarse de que la base de datos ya está creada antes de la fecha de descarga. /************************************************* *******************************************/ / * Código en http: / / legend.ws / blog / consejos trucos / csv-PHP-MySQL-import / / /****************** * Editar las entradas siguientes para reflejar los valores apropiados ************************************************** ************************/ $ databasehost = "localhost"; $ DatabaseName = "test", $ databasetable = "ejemplo"; databaseusername $ = " prueba "; $ databasepassword =" "; $ fieldseparator =" "; $ lineseparator =" n ", $ csvfile =" bbqrest.csv "; /***************** ************************************************** *************************/ / * ¿Te gustaría agregar un campo ampty al comienzo de estos registros? / * Esto es útil si usted tiene una mesa con el primer campo de un número entero auto_increment / * y el archivo csv no tiene como campo vacío antes de los registros. / * Establecer una para sí y 0 para no. ATENCIÓN: no se establece a 1 si no está seguro. / * Se puede volcar los datos en los campos de malo si este campo adicional no existe en la tabla /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * ¿Te gustaría guardar las consultas MySQL en un archivo? Si es así ahorrar $ set a 1. / * El permiso en el archivo se debe establecer en 777. Puedes subir un archivo de muestra a través de ftp y / * cambiar los permisos, o se ejecutan en el sistema: output.sql contacto & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ save = 1; $ archivosalida = "output.sql"; /*********** ************************************************** *******************************/ [...]

hfvd 24 de octubre 2007 a ​​las 24:44

Hola, una pequeña modificación para los valores de incremento automático en la columna 1 (campo id)

véase variable $ count.

ola, Enrico.

/ / $ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
/ / @ Mysql_select_db ($ DatabaseName) or die (mysql_error ());

$ Lines = 0;
$ Consulta = "";
$ Linearray = array ();

$ Count = 0;

foreach (split ($ lineseparator, $ csvcontent) as $ linea) {

$ Count = $ count + 1;

$ Lines + +;

$ Linea = trim ($ linea, "\ t");

$ Line = str_replace ("'"," \ '", $ linea);

$ Linearray = explode ($ fieldseparator, $ linea);

$ Linemysql = implosión ("','",$ linearray);

$ Query = "INSERT INTO` de la tabla db `VALUES ('$ count', '$ linemysql');";

$ Consulta .= $ consulta. "\ N";

@ Mysql_query ($ query);
}

/ / @ Mysql_close ($ con);

[...] En una nota similar, aquí es un script pre-hechos que el autor dice que va a importar un archivo CSV en MySql: script PHP para importar datos csv en mysql. [...]

»CSV importación 07 de junio 2008 a las 10:29 AM

[...] /******************************************** ************************************************/ / * Código de http://legend.ws/blog/tips-tricks/csv-php-mysql-import/ / * Modificar las entradas de abajo para reflejar los valores apropiados /************* ************************************************** *****************************/ $ databasehost = "localhost"; $ DatabaseName = "xxxxx", $ databasetable = "xxxx" ; $ databaseusername = "xxxx"; $ databasepassword = "xxxx"; $ fieldseparator = ""; $ lineseparator = "n", $ csvfile = "xport/2008_BF.csv"; /********* ************************************************** *********************************/ / * ¿Te gustaría agregar un campo ampty al comienzo de estos registros ? / * Esto es útil si usted tiene una mesa con el primer campo de un número entero auto_increment / * y el archivo csv no tiene como campo vacío antes de los registros. / * Establecer una para sí y 0 para no. ATENCIÓN: no se establece a 1 si no está seguro. / * Se puede volcar los datos en los campos de malo si este campo adicional no existe en la tabla /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * ¿Te gustaría guardar las consultas MySQL en un archivo? Si es así ahorrar $ set a 1. / * El permiso en el archivo se debe establecer en 777. Puedes subir un archivo de muestra a través de ftp y / * cambiar los permisos, o se ejecutan en el sistema: output.sql contacto & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ save = 1; $ archivosalida = "output.sql"; /*********** ************************************************** *******************************/ [...]

dani 25 de agosto 2008 a las 20:06

Wow es genial ... no tenía idea después de leer su código ... agradezco mucho

steve 31 de agosto 2008 a las 19:04

Novato total - arrancándome los pelos tratando de importar csv de Excel en phpMyAdmin (en Mac). Me encantaría saber exactamente dónde y qué debo hacer con este script php ...?

José 03 de septiembre 2008 a las 24:39

Steve,

Que pondría a este script en un directorio web accesible, después de cambiar las variables que hay que cambiar. Leer los comentarios en el guión para averiguar lo que es necesario especificar. A continuación, ejecuta el script en el navegador web, como:

http://www.example.com/path-to-script/simplescvimport.php

ollyd 09 de septiembre 2008 a las 6:35 AM

que sería una buena idea añadir evitar que los encabezados en el csv de ser presentado en la base de datos. O para crear un script que saca la primera fila y crea una base de datos con estos valores como los nombres de columna.

Rengaraj 12 de septiembre 2008 a las 24:11

Estoy recibiendo este error archivo no encontrado. Asegúrese de que ha especificado la ruta correcta.

Rengaraj 12 de septiembre 2008 a las 24:16

¿Puede cualquier respuesta rápida que tengo un bbqrest.csv csv en la ruta correcta (root) ..

Steve 12 de septiembre 2008 a las 24:19

Rengaraj,
el archivo debe ser en el mismo lugar que el archivo PHP.
Además, usted realmente no tiene que usar el mismo nombre de archivo CSV.
bbqrest.csv es un ejemplo, sustituir este nombre de archivo con el suyo propio.

Robbie 24 de septiembre 2008 a las 24:19

No tiene en cuenta ámbitos tales como la siguiente línea:
Fname, lname, "Company, Inc", ciudad, estado, código postal

Empresa y obtener Inc se dividió en dos columnas diferentes.

Robbie 24 de septiembre 2008 a las 14:27

Bueno, aquí está la solución a mi comentario anterior:

insertar en el medio:

$ Linearray = explode ($ fieldseparator, $ linea);

... Insertar siguiente fragmento de código ....

$ Linemysql = implosión ("','",$ linearray);

Encuentra y mantiene todas las "cosas, cosas más", junto antes de la implosión ella.

$ A = "";
$ B = "";
$ Qoutecount = 0;
for ($ x = 0; $ x -1) {
$ Qoutecount + +;
if ($ qoutecount == 1)
$ A = $ x / / tienda de primera instancia
elseif ($ qoutecount == 2) {
$ Quotecount = 0;
$ B = $ x / / tienda de segunda instancia
/ / Que lo hace ... recopilar todos los elementos de $ a a $ b $ a en e ignorar los elementos nada a partir de $ a a $ b en nueva matriz;
$ Newa = "" / / inicializar nueva cadena.
for ($ z = $ a, $ z $ a & & $ y

Robbie 24 de septiembre 2008 a las 14:27

)
/ / Saltar, ya que cae dentro de los elementos del array mal
más
$ NewArray [$ y] = str_replace ('"',",$ linearray [$ y]);
$ Linearray array_values ​​= ($ newArray); / / restablecer las claves de la nueva matriz
$ X + +;
}
}
}

Brad 26 de septiembre 2008 a las 2:43 pm

me sale el primer tanto de la misma corte y el resto sólo el código en el navegador. Sé que PHP está funcionando porque el resto del sitio de obras.
Hice la actualización a PHP5 qué importa eso?

ASCASC 27 de septiembre 2008 a las 5:04 AM

Brad, si lo hubiera descargado antes de la semana pasada, sustituir el '<?' en la parte superior con "<? php '(quitar el espacio)

Roelof 30 de septiembre 2008 a las 8:06 AM

Robbie, gracias a que además, es muy bienvenida. Por desgracia, no funciona de inmediato cuando se copia. Creo que le falta algo, porque el código se extiende a lo largo de dos puestos.

¿Podría usted comprobar el código que se muestra aquí? ¿Falta algo?

Phillip 01 de octubre 2008 a las 10:26 PM

Hola, gracias buen guión. Cuando se ejecuta me sale:
Fatal error: el tiempo de ejecución máximo de 30 segundos superó en la línea 63

¿Hay algo que pueda hacer para evitar esto?

admin 06 de octubre 2008 en 12:27a.m.

¿Qué tan grande es el archivo que está intentando importar?
en cualquier caso, trate de añadir la siguiente línea después de las etiquetas de apertura inicial:
set_time_limit (300);
Esto le dará a la escritura de hasta 5 minutos (300 segundos) de tiempo de ejecución.
Sustitución de 300 a 0 le permitirá tomar tanto tiempo como sea necesario.

Fidel Gonzo 10 de octubre 2008 a las 5:12 AM

Hola a todos,

Hice un pequeño cambio en su código, por lo que funciona como un importador de CSV, como debe ser.

CSV-s de primera línea debe contener los nombres de columna que desee importar, por lo que cambiar el bucle foreach:
foreach (split ($ lineseparator, $ csvcontent) as $ linea) {

$ Lines + +;

$ Linea = trim ($ linea, "\ t");

$ Line = str_replace ("\ r ","",$ línea);

/ * Obtener nombres de columna de la primera línea de CSV * /
if ($ lines == 1) {
$ Columnas = explode ($ fieldseparator, $ linea);

$ Columnsql = implosión (",",$ columnas);

echo $ columnsql;
continuar;
}

/************************************
Esta línea se escapa el carácter especial. eliminarlo si las entradas ya están escapó en el archivo csv
************************************/
$ Line = str_replace ("'"," \ '", $ linea);
/*************************************/

$ Linearray = explode ($ fieldseparator, $ linea);

$ Linemysql = implosión ("','",$ linearray);

if ($ addauto)
$ Query = "INSERT INTO $ databasetable ($ columnsql) values ​​('$ linemysql');";
más
$ Query = "INSERT INTO $ databasetable ($ columnsql) values ​​('$ linemysql');";

$ Consulta .= $ consulta. "\ N";

@ Mysql_query ($ query);
}

inicio de sesión 20 de octubre 2008 a las 6:10 pm

Jefe Buen trabajo ;-)

enim 23 de octubre 2008 a las 4:16 AM

no insertar en la tabla de base de datos donde desee insertarlo ..: (

gen 29 de octubre 2008 a las 9:28 AM

Yo sólo puedo conseguir la primera línea de mi archivo CSV para ser importados a la base de datos.
Aquí está una copia del archivo de registro:

insertar en los valores de producción (", '2008-10-21 ', '50', '50 ', '50', 'esta es la línea de las primeras notas', 'esta es la línea 2 notas', 'esta es la línea de las notas 3 ', '0000-00-00', '0000-00-00 ', '0000-00-00', '456 Morningside Avenue ',' ste. 512 ',' Brooklyn ',' Nueva York ', '10023', 'Joe', 'Cliente 1');
insertar en los valores de producción (", '2008-10-09 ', '50', '50 ', '50', 'esta es la línea de las primeras notas',",",' 09/10/2008, '2008 -10-14 ', '0000-00-00', ',' '456 Morningside Ave Ste 512 ',' Brooklyn ',' Nueva York ', '10023', 'Joe', 'Cliente 1').;
insertar en los valores de producción (", '2008-10-14 ', '25', '25 ', '25', 'Notas 1',",",' 10/14/2008', '2008-10-17 ',' NULL ', '555 en alguna parte', 'Suite 123', 'Nueva York', 'nuevo y', '10001 ',' Joe ',' Nombre 1 ');
insertar en la producción
insertar en la producción
insertar en los valores de producción (", '2008-10-17 ', '50', '50 ', '50', 'esta es la línea de las primeras notas',",",' 03.10.2008, 0000 -00-00 ', '0000-00-00', ',' '456 Morningside Ave Ste 512 ',' Brooklyn ',' Nueva York ', '10023', 'Joe', 'Cliente 1').;
insertar en los valores de producción (", '2008-10-18 ', '25', '25 ', '25', 'Notas 1',",",' 10/04/2008, 0000-00-00 ', '0000-00-00', '555 en alguna parte ',' Suite 123 ',' Nueva York ',' nuevo y ', '10001', 'Joe', 'Nombre 1');
insertar en la producción
insertar en los valores de producción (", '2008-10-20 ', '34', '34 ', '34', 'nuevas notas',",",' 10/06/2008, 0000-00-00 , 0000-00-00',",",",",",' Steve',");
insertar en los valores de producción (", '2008-10-21 ', '12', '12 ', '12', 'notas aún más reciente',",",' 10/07/2008, '0000-00- 00 ', 0000-00-00',",",",",",' marca',");
insertar en la producción
insertar en la producción
insertar en la producción
insertar en la producción
insertar en los valores de producción (", '2008-10-16 ', '0', '0 ', '0', 'más tarde todavía',",",' 10/12/2008, 0000-00-00 , 0000-00-00',",",",",",",");
insertar en los valores de producción (", '2008-10-17 ', '0', '0 ', '0', 'más tarde todavía',",",' 10/13/2008, 0000-00-00 , 0000-00-00',",",",",",");
insertar en los valores de producción (", '2008-10-18 ', '0', '0 ', '0', 'más tarde todavía',",",' 10/14/2008, 0000-00-00 , 0000-00-00',",",",",",");
insertar en la producción
insertar en los valores de producción (", '2008-10-01 ', '34', '34 ', '34', '',",",' última 02.10.2008', '2008-10-04 ', '2008-10-04',",",",",",' bruce');
insertar en los valores de producción (",");

Se dice que es la inserción de 20 registros, pero sólo el primero lo hace en la base de datos. ¿Alguna idea?

MarkFromHawaii 19 de noviembre 2008 a las 4:00 am

Hola a todos,

Gracias por el guión. Soy un novato en PHP y MySQL, así que realmente apreciamos algo como esto. Me llegó hasta la generación de "Archivo no se puede escribir, comprobar los permisos" mensaje de error en mi navegador. ¿Puede alguien explicarme el comentario sobre la configuración de los permisos a 777? Estoy usando un archivo de Excel generado. Csv? Gracias de antemano.

admin 01 de diciembre 2008 a las 2:10 pm

Hola Marcos,

En primer lugar, se está refiriendo a que el archivo seleccionado en la variable $ archivosalida.
en segundo lugar, este archivo tiene que tener permisos de escritura. Supongo que estás usando Linux, no ventanas, ya que esto generalmente no es un problema con las ventanas.
En Linux, basta con SSH a la máquina, cambiar al directorio donde el archivo de salida es, y escriba: chmod 777 nombre de archivo
donde 'nombre' es el nombre real del archivo.
Si usted no tiene SSH, FTP muchas apoyar a los clientes cambiar los permisos. Para ello, FTP a la carpeta que contiene el archivo de salida, a continuación, seleccione el archivo, y localizar de este software ftp la opción de cambiar el permiso. Lo puso a 777, o "leer, escribir, ejecutar 'para todo el mundo.

Chris 18 de diciembre 2008 a las 14:31

Hola a todos,

Me encanta este guión, y que estaba funcionando bien, ahora, de repente el guión solía insertar los registros. La secuencia de comandos completa, e incluso las salidas del número de registros, pero no toca la base de datos en todos los ...

¿Alguna idea?

Gracias
C

admin 18 de diciembre 2008 a las 17:35

Estimado Chris,

Por favor, cambie:
@ Mysql_query ($ query);
con:
@ Mysql_query ($ query) or die (mysql_error ());

y quiero saber cuál es el error que te da

Gary Pearman 23 de febrero 2009 a las 7:25 AM

En cuanto a la cuestión de las cotizaciones, usted puede usar esto:

$ Linearray = preg_split ("/,(?=(?:[^ \ "] * \" [^ \ "] * \ ")*(?![^ \"] * \ "))/", $ line );

Saludos,
Gaz.

Stanley Zdun 24 de agosto 2009 a las 18:19

lo dice a la carga este en la base de datos

LOAD DATA LOCAL INFILE 'PATH' en campos de la tabla tabla terminado por "," líneas terminado por '\ n';

i cambiar la ruta y la mesa de su instrumentación, pero me da un error que el código de su sintaxis incorrecta 1064

¿alguien puede darme algunos consejos sobre qué hacer

gracias
Stan

admin 26 de agosto 2009 a las 3:20 AM

Hola Stanley, el problema es con las comillas simples. El software del blog aquí les vuelve a escribir. Sólo tiene que sustituir "y" con "

PS: el comando anterior para cargar directamente un archivo CSV en la base de datos desde la línea de mysql. Esto es bueno, pero no en relación con la secuencia de comandos :)

Claus 11 de septiembre 2009 a las 24:59

Hola a todos!

Parece tener el trabajo guión ... exepto que no se escriben datos en mysql ...
Al igual que con Chris: La secuencia de comandos completa, e incluso las salidas del número de registros, pero no toca la base de datos en todo ... pero me dice: Se han encontrado un total de 1 registros de este archivo csv.

¿Qué hago mal (soy un novato en php y mysql)

Gracias
Claus

Adrian 13 de septiembre 2009 a las 19:03

Hola a todos
Estoy utilizando Drupal para crear una nueva página web, el reto que estoy teniendo ahora es que necesito para importar datos desde un archivo CSV a una base de datos mysql, el cual ha compartido tablas, por lo tanto, algunos de los campos en los que necesito para importar datos csv se encuentran en las distintas secciones de la misma base de datos será el guión de trabajo para mí? Si no puede este archivo csv ser importados con cualquier otro método?

Por favor avise, gracias por cualquier ayuda.

Saludos
Adrian

Okoth 18 de septiembre 2009 a las 20:16

Gracias por el guión. Muy comprensible.

¿Cómo puedo modificar el script para que se capta y almacena un archivo csv desde Internet a MySQL?

admin 03 de octubre 2009 a las 17:54

@ Adrian
Hola Adrián.
Drupal, como usted señaló, tiene estructuras complejas mesa. Dependiendo de qué tipo de datos que está importando, es muy probable que este dato debe ser dividido en varias tablas, por lo general con una clave de política exterior, como el ID del nodo.
Por desgracia, la secuencia de comandos no ayudar a hacerlo.

admin 03 de octubre 2009 a las 17:58

@ Okoth
Hola Okoth.

Lo más probable es que usted puede deshacerse de las líneas 33-54 y reemplazarlos con esta única línea:

$ Csvcontent = @ file_get_contents ("http://...");

reemplazar los puntos con la url correspondiente (url directa al archivo CSV)

admin 03 de octubre 2009 a las 18:02

@ Claus
Hola Claus.
¿El CSV contiene realmente un solo registro?

Ya que el guión llegó a la etapa en la que muestra el número de registros, supongo que no fallan cuando se conecta a la base de datos (líneas 56-57) por lo que no es el problema.

Es posible que la consulta para insertar datos está fallando.
Trate de reemplazar la línea 88 con:
mysql_query ($ query) or die (mysql_error ());

y comprobar cuál es el error que recibe.

Andy Brotherton 04 de octubre 2009 a las 2:14 pm

Hola,

Me gustaría usar este script, pero no estoy seguro de lo que estoy haciendo mal. Tengo el mismo problema mencionado anteriormente con los datos no se cargan en la base de datos. Encuentra el número correcto de filas, pero no muestra nada en el PP.

He cambiado la línea 88 @ mysql_query ($ query) or die (mysql_error ());

y aparece este mensaje de "número de columnas no corresponde al número en la fila 1"

admin 05 de octubre 2009 a las 8:46 AM

@ Andy Brotherton : Esto significa que la consulta está tratando de insertar un registro con un número de columnas que no coinciden con la de la tabla de base de datos.

1) ¿Está seguro de que el archivo CSV tiene exactamente el mismo número de columnas que la tabla en la base de datos?
2) ¿Es el separador de campo en este archivo CSV realmente una coma? o se trata de una pestaña, por ejemplo, o de otro tipo? Si no es una coma, cambie el valor de $ fieldseparator en la línea 12
3) La mesa debe estar ya creado en la base de datos antes de intentar cargar los datos en él. ¿Está usted seguro que lo tienes?

MAFF 07 de octubre 2009 a las 7:24 AM

¿Cómo puedo vaciar mi mesa ya está lleno antes de insertar el nuevo archivo?
o puedo actualizar una entrada ya existente?

TRUNCATE, UPDATE? ¿Cómo conseguir esto en la consulta?

admin 08 de octubre 2009 a las 16:48

el comando es la siguiente: nombre de tabla truncada.

puede insertar el siguiente en la línea 58:
@ Mysql_query ("truncar $ databasetable");

pero esto no es reversible! así que ten cuidado

Nathan 20 de octubre 2009 a las 5:59 AM

Hola, me dice que el número de registros, pero no poner los datos en la base de datos

Esperamos que pueda ayudar a

Nathan

phpwebdesigner2010 08 de diciembre 2009 a las 21:39

Tengo que descargar los datos automáticamente desde un servidor remoto. Es un archivo CSV, y tengo que descomprimir y guardar los datos en una base de datos mysql que he creado. Existen varias bases de datos. La primera sección es una de las bases de datos de que alguien me ayudó con y funciona de maravilla. Puedo configurar una tarea programada y que se descarga automáticamente en la fecha prevista. Sin embargo tengo más bases de datos y no puede traer a los demás a trabajar.

En la sección siguiente funciona muy bien!!
--------------------------

#! / Bin / bash

deleteparam = '-delete-after';
# Deleteparam = "
# Directorio = '-directory-prefix = / $ HOME / myfolder / myfolder /'
= directorio "
# ContraseñaDeUsuario = '-http-user = bla-http-password = bla'

toupper () {
echo $ 1 | tr "[: lower:]" "[: upper:]"
}

# If [-z "$ 1"], y luego
# Echo uso: mesa de $ 0
# Exit
# Fi

ZIP = nombre del archivo de datos en el servidor remoto
ZIP = `toUpper $ ZIP`

# El archivo dentro del zip tiene un menor _
DATOS = nombre de la tabla en mi base de datos mysql
DATA = `toUpper $ DATA '

# Rm $ TABLE.csv.zip
# Rm $ data.csv

cd / $ HOME / myfolder / myfolder /
####### Obtener la residencia

wget -O $ ZIP.csv.zip
dormir 10
####### Descomprimirlo
pwd
ls-la

unzip-o $ ZIP.csv.zip
dormir 10
####### Es la carga

wget-verbose $ deleteparam $ directorio $ ContraseñaDeUsuario http://mywebsite/myfolder/import.php?table = $ DATA
sueño 300

###### Eliminar los archivos

rm $ ZIP.csv.zip
rm $ data.csv
dormir 10
_ ---------------------------
TODO ESTO POR ENCIMA DE OBRA MARAVILLOSA

ESTO ES LO QUE NECESITO AYUDA CON
--------------------------
1. Necesito un script para añadir a los archivos anteriores que descargar las fotos. Si usted ve por debajo de lo que necesito un script que obtiene automáticamente la fecha y la hora de que el guión fue ejecutado. No tiene foto de servidor de los últimos 7 días, y se actualiza constantemente. Una vez que se corrió este script se descargan los datos en la tabla que he creado.

2. Entonces, necesito un script que las consultas de la base de datos mysql en busca de entradas que tienen fotos y luego recuperar las fotos reales directamente desde sus servidores remotos. Este archivo CSV no descargar las fotos, sólo los datos que pueda utilizar para ejecutar un script para recuperar las fotos en un lugar dado. Ver más abajo.
A continuación se presentan las instrucciones que he recibido.

INSTRUCCIONES
Foto datos se recuperan a través de HTTP. Los datos de fotos se actualiza una vez al día y está disponible para su descarga como un archivo CSV. A continuación, puede escribir un guión con los datos del archivo CSV a punto de volver a las imágenes en nuestro servidor de imágenes. Debe proporcionar un valor para la cadena de consulta last_updt> "AAAAMMDD HH: MM: SS 'de la dirección URL para devolver los datos. El last_updt campo es el valor de la fecha de la última vez que la foto fue cambiada en el listado.

Usted tendrá que reemplazar el user_code y los titulares de contraseña lugar (XXXX) con las credenciales de acceso proporcionado a usted.

Paso 1: Para recuperar la foto principal lista de datos de archivo CSV ir a la siguiente URL.

Paso 2: La tabla de datos de fotos debe descargar en un formato CSV.

Paso 3: Con las banderas de Y y el número de ML en los datos que se puede vincular a los lugares de nuestra imagen.

Nuestro camino principal directorio de la imagen es la siguiente:

http://remoteserver/folder/folder/folder/Last3DigistsofML # / # lista. jpg

Por ejemplo, la fotografía principal para el número de lista 1899430 se encuentra en

http://remoteserver/folder/folder/1/430/1899430.jpg

Nuestro directorio de imagen adicionales estructura de la ruta es la siguiente:

http://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # / # lista _photoPosition.jpg

Por ejemplo, la segunda foto para el número de lista 1899430 se encuentra en

http://remoteserver/folder/folder/2/430/1899430_2.jpg

Marcar Cloyd 03 de enero 2010 a las 19:33

Excelente guión! Yo necesitaba un empujón poco para un proyecto que estaba trabajando y este hizo el truco.

Hice algo extraño notar sin embargo, he modificado el script para trabajar con un formulario y me di cuenta de que para la búsqueda, el último campo estaba enculada porque hasta la nueva línea de caracteres (o \ r o \ n o ambos) se está grabando en la base de datos MySQL.

A tal fin, si la sustituye por:
$ Line = str_replace ("\ r ","",$ línea);

con:
$ Line = str_replace ('\ r',",$ línea);

que se mantendrá la devolución de ser un problema, como para la nueva línea, he añadido un poco de algo que permite la inserción de nuevos registros, pero actualiza los registros existentes, de modo que no acaben con las entradas duplicadas. En la parte superior del código de abajo, verás que me hizo la misma solución para la nueva línea de caracteres reales.

$ Linemysql = implosión ("','",$ linearray);

$ Newlinemysql = str_replace ('\ n',",$ linemysql);

if ($ addauto) {

switch ($ databasetable) {

caso ("Dirección"):

$ Duplicatevals = "address = VALOR (dirección),
ciudad VALORES = (ciudad), Estado = valores (estado),

zip = VALOR (zip) ";

break;

caso ("dueño"):

$ Duplicatevals = "ownername = VALUES (ownername),
housetype = VALUES (housetype),

addresskey = VALUES (addresskey) ";

break;

}

$ Query = "INSERT INTO $ valores databasetable (",'$ newlinemysql)

ON DUPLICATE KEY UPDATE

$ Duplicatevals ";

} Else {

$ Query = "insert into valores databasetable $ ('$ linemysql)

ON DUPLICATE KEY UPDATE

$ Duplicatevals ";

}

Además, en mi forma he añadido el nombre de la tabla y si quería que la tabla sea [booleano] "addauto" o no como una única entrada de un menú desplegable (separados por comas), a continuación, dividir el resultado en la parte superior de la simplecsvimport guión.

Por último, usted tiene que recordar para establecer los índices de la base de datos para el "DUPLICADO EN ..." al trabajo, incrementos de auto no funcionará en este caso, por lo que tiene que fijar un índice secundario en las tablas de incremento automático, las tablas que don 'incremento automático t y tienen campos de trabajo únicos, con el índice único si ese es el camino que le gustaría ir.

Espero que esto ayude a alguien!

¡Salud!

Marcar el campamento 11 de enero 2010 a 12:10a.m.

Hola,

Hecho algunas modificaciones. . Mi archivo txt tiene 3 columnas separadas por un "|" (pipe). La secuencia de comandos muestra los datos del archivo, cuenta con las filas, pero no introduce los datos en la base de datos. ¿Algún comentario?

$ Csvcontent = fread ($ archivo, $ size);

fclose ($ archivo);

$ Con = @ mysql_connect ($ dbhost, $ dbusername, $ dbuserpassword) or die (mysql_error ());
@ Mysql_select_db ($ fuente de datos) or die (mysql_error ());

$ Lineseparator = "\ n";
$ Fieldseparator = "|";

$ Lines = 0;
$ Consulta = "";
$ Linearray = array ();

$ Count = 0;

foreach (split ($ lineseparator, $ csvcontent) as $ linea) {

$ Count = $ count + 1;

$ Lines + +;

$ Linea = trim ($ linea, "\ t");

$ Line = str_replace ("\ r ","",$ línea);

/************************************
Esta línea se escapa el carácter especial. eliminarlo si las entradas ya están escapó en el archivo csv
************************************/
$ Line = str_replace ("'"," \ '", $ linea);
/*************************************/

$ Linearray = explode ($ fieldseparator, $ linea);

$ Linemysql = implosión (""",$ linearray);

if ($ addauto)

$ Query = "insert into valores INDICADORES ('$ count', '$ linemysql');";

más

$ Query = "insert into valores INDICADORES ('$ linemysql');";

$ Consulta .= $ consulta. "\ N";

@ Mysql_query ($ query) or die (mysql_error ());

echo "$ linemysql \ n";
}

rajdeo 04 de febrero 2010 a las 7:21 AM

Yo no lo entiendo la forma en que el trabajo de un archivo de control. significa en primer lugar buscar y seleccionar un archivo y luego enviar donde tengo que modificar

Kish 17 de febrero 2010 a las 14:31

Este es un código muy útiles para mí ..
gracias.

¿Cómo puedo obtener el archivo de exploración en lugar de escribir la ruta completa ..

Por favor ayuda en esto.

gracias

Gary 02 de marzo 2010 a las 11:26 AM

Gracias, este código ha ayudado mucho!

¿Cómo iba a modificar para permitir una forma que se muestra en la que el usuario navega y selecciona el archivo CSV para ser importados en la mesa?

Y también ¿cómo podría hacerlo de modo que cada vez que un nuevo archivo se presenta sería modificar el que se encuentra actualmente almacenado en la tabla?

Muchas gracias

data_type 05 de marzo 2010 a las 24:03

[...] Que había algunas muy buenas propiedades que podría utilizar para ayudarme a enseñar a la gente de PL / SQL y XML. ITips y trucos script PHP para importar datos CSV en la escritura mysqlPHP para importar datos en mysql csv ... [...]

Jeremie 09 de marzo 2010 a las 24:39

Hola a todos,

¿Cómo puedo incluir estas citas csv en la fecha del "día, mes día, año 2010" y el estado "prov, del Estado" a una columna en mi base de datos? Veo muchos ejemplos, pero no puedo hacerlo funcionar. Toda ayuda será buena.

ak, 10037591,1, "Martes, 9 de marzo 2010 15:55:16", 59.7151, -151.4434,2.7,75.90,32, "la península de Kenai, Alaska"
THX

admin 16 de marzo 2010 a las 24:28

@ Kish
el código actual no permite la navegación por / cargar el archivo.
Usted puede simplemente poner el archivo CSV en el mismo directorio que el script PHP, y basta con establecer la variable $ csvfile a ser igual al nombre del archivo (sin ruta)

admin 16 de marzo 2010 a las 12:30 PM

@ Gary
podría usar un mysql_query @ ("truncar $ databasetable"), justo después de la declaración @ mysql_select_db.
Pero tenga cuidado, ya que se acabará con los datos y no es reversible.

la paz 13 de abril 2010 a las 10:52 AM

¿Cómo saltar la primera línea / fila que es un encabezado en el archivo csv e inserte el resto de los datos en db?

Carl 18 de abril 2010 a las 11:00 am

Al igual que Gary, quiero ser capaz de sobreescribir un registro existente, sino por su actualización, no borrar todos los datos en la base de datos. Sp en algún lugar por aquí:

if ($ addauto)
$ Query = "INSERT INTO $ valores databasetable (",'$ linemysql');";
más
$ Query = "insert into valores databasetable $ ('$ linemysql');";

¿Cómo puedo comprobar para ver si existe el registro y actualización en lugar de insertar?

la paz 20 de abril 2010 a las 11:22 AM

El guión es la lectura de una línea adicional en el archivo csv. por ejemplo si los archivos csv tiene 25 registros Esto demuestra que hay 26 registros. ¿Puedes decirme dónde estoy haciendo mal?

He añadido para comprobar si se trata de una primera línea y continuar bucle si la primera línea.

gracias

Ap.Muthu 28 de abril 2010 a las 6:02 AM

El siguiente fue el truco para mí:
LOAD DATA LOCAL INFILE LOW_PRIORITY
'C: \ \ Documents and Settings \ \ Administrator \ \ Desktop \ \ SigmaS1.csv'
INTO TABLE `mydb`. `Mitabla`
FIELDS ESCAPED BY '\ \'
SUSPENDIDO POR ','
OPCIONALMENTE ENCLOSED BY '"'
LINES TERMINATED BY '\ r \ n "
(`User`, `pwd`, `sno`, `cant`, `ActiveRec`);

alejandro 11 de mayo 2010 a las 4:03 AM

Esto fue muy útil para mí ... pero tenía que hacer una modificación para la lectura de archivos de gran tamaño. Yo estaba confundido al principio, pero luego se dio cuenta de la secuencia de comandos de carga todo el archivo en la memoria (¿verdad?). Así que aquí es una versión personalizada del código, que dice en las líneas de una en una. se lee en los archivos que se parecen
begin file:
2,3, -1
1, -2,4
archivo final (con valores muchos más). Yo quería que cada línea de ser un elemento de la tabla y una identificación con el número de línea, así como la Identificación del primero representa el tamaño de la tabla (que no va a cambiar más adelante).

<? Php

/********************************/
/ * Código de http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Editar las entradas siguientes para reflejar los valores apropiados
/********************************/
$ Databasehost = "localhost";
$ DatabaseName = "tomoku";

Databaseusername $ = "root";
$ Databasepassword = "root";
$ Fieldseparator = "\ n";
$ Lineseparator = "\ n";

/ / Este código lee los archivos de tatami en la base de datos

$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ DatabaseName) or die (mysql_error ());

/ / Este bucle sobre un montón de archivos
for ($ r = 2; $ r <14, $ i + +) {
for ($ c = $ r, $ c

saman 03 de junio 2010 a las 1:10 AM

Si yo me encuentro limitado para acceder a disco duro del cliente, ¿cómo voy a subir el archivo CSV para el ejemplo servidor.Para podemos establecer el valor por defecto para el archivo de control de carga

Coulton 05 de junio 2010 a las 9:55 AM

Guión maravilloso, pero estoy teniendo problemas recurrentes.
Después de ejecutar el script, que dice "Se ha encontrado un total de 1 registros de este archivo csv.".
Miré hacia atrás en mi mesa y muestra un espacio en blanco.
He comprobado para asegurarse de que era el número correcto de columnas y estaban allí.
Por favor, ayuda!

Gracias,
Coulton

gio 05 de junio 2010 a las 2:55 pm

Si desea evitar la inserción de la primera fila, sólo jugar con el contador, por ejemplo:

$ Lines = 1; (El valor del contador es 1)
$ Consulta = "";
$ Linearray = array ();

foreach (split ($ lineseparator, $ csvcontent) as $ linea) {

$ Lines + +; (Asigna la primera línea # 2 (de cabecera)

if ($ lines> = 3) {(inicio en la posición # 3 "nada superior o igual a 3")

Newbie 14 de junio 2010 a las 9:41 pm

Yo tenía este script que se ejecuta bien en un dominio diferente. Luego, cuando me mudé, la tarea de cron descarga el archivo csv, lo almacena, y luego lo elimina, pero doesnt subirlo a mysql. Cuando miro el archivo import.php y tratar de ejecutarlo me sale el error diciendo que no puede encontrar el archivo asegúrese de que tiene la ruta correcta. Ayuda.

Pollux 24 de junio 2010 a las 10:28 AM

Para saltar la primera línea / fila que es un encabezado en el archivo csv hacer esto:
... ..
if ($ lines> 1) {

if ($ addauto)
$ Query = "INSERT INTO $ valores databasetable (",'$ linemysql');";
más
$ Query = "insert into valores databasetable $ ('$ linemysql');";

$ Consulta .= $ consulta. "\ N";
@ Mysql_query ($ query);
}

Darwin 23 de julio 2010 a las 1:21 AM

Hmm .. i tiene errores como este archivo "no se puede escribir, comprobar los permisos. Se encontraron un total de 2 registros de este archivo csv. "Alguna idea de lo que salió mal?

Darwin 23 de julio 2010 a las 1:23 AM

Hmm .. i tiene errores como este archivo "no se puede escribir, comprobar los permisos. Se encontraron un total de 2 registros de este archivo csv. "Alguna idea de lo que salió mal?

Haan 07 de agosto 2010 a las 5:11 AM

Hola,
Obteniendo este error. cómo resolver esto?

Error:
El archivo no se puede escribir, comprobar los permisos. Se encontraron un total de 13 registros de este archivo csv.

Gracias
Haan

Vinita 17 de agosto 2010 a las 6:49 AM

Yo uso este código ... ... ... Es demasiado fácil de implementar en mi sitio ... ..
Muchas gracias ..

Quiero algo más de código para PHP ... ...
Para convertir la página en pdf ...

Radikale 18 de agosto 2010 a las 6:35 pm

¡Buen trabajo!

Yo sólo tengo una pregunta.

¿Es posible usar más caracteres al comando explotar en el guión?
Yo allso necesidad de que exista una separación con una. y;

Muchas gracias, si un cuerpo tiene la menor idea!

Roy 20 de agosto 2010 a las 12:00 PM

Hola,

Yo uso este script para importar un datafeed csv a mysql.
El único problema que tengo, es que las comillas "" también se insertan en mis tablas
Delimitador: (komma)
Caja: "(aanhalingsteken)
Nueva línea: \ r \ n

Roy 20 de agosto 2010 a las 24:02

Aquí está el código por cierto,

$ Databasehost = "localhost";
$ DatabaseName = "base de datos";
$ Databasetable = "mesa";
$ Databaseusername = "admin";
$ Databasepassword = "admin";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
$ Csvfile = "http://linktosite/";
$ Addauto = 0;
$ Save = 0;
$ Archivosalida = "output.sql"; / / si el ahorro es de (1)
$ File = fopen ($ csvfile, "rb");
$ Csvcontent stream_get_contents = ($ archivo);

fclose ($ archivo);

$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ DatabaseName) or die (mysql_error ());

$ Lines = 0;
$ Consulta = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ linea) {

$ Lines + +;

$ Linea = trim ($ linea, "\ t");

$ Line = str_replace ("\ r ","",$ línea);

/************************************
Esta línea se escapa el carácter especial. eliminarlo si las entradas ya están escapó en el archivo csv
************************************/
$ Line = str_replace ("'"," \ '", $ linea);
/*************************************/

$ Linearray = explode ($ fieldseparator, $ linea);

$ Linemysql = implosión ("','",$ linearray);

if ($ addauto)
$ Query = "INSERT INTO $ valores databasetable (",'$ linemysql');";
más
$ Query = "insert into valores databasetable $ ('$ linemysql');";

$ Consulta .= $ consulta. "\ N";

@ Mysql_query ($ query);
}

@ Mysql_close ($ con);

if ($ guardar) {

if (! is_writable ($ archivosalida)) {
echo "El archivo no se puede escribir, comprobar los permisos \ n".;
}

else {
$ Archivo2 = fopen ($ archivosalida, "w");

if ($ archivo2) {
echo "Error al escribir en el archivo de salida \ n".;
}
else {
fwrite ($ archivo2 $ consulta);
fclose ($ archivo2);
}
}

}

echo "Se ha encontrado un total de $ registros de líneas de este archivo csv. añadido a DB \ n ".;

Matt 08 de septiembre 2010 a las 23:18

Esto funciona muy bien. ¡Gracias!

Oram 10 de septiembre 2010 a las 01:17 AM

Estoy frente a notar por debajo de

Aviso: Undefined offset: 1 in C: \ wamp \ www \ Nueva carpeta (2) \ exl8.php en la línea 20

Aviso: Undefined offset: 2 en C: \ wamp \ www \ Nueva carpeta (2) \ exl8.php en la línea 20

Aviso: Undefined offset: 2 en C: \ wamp \ www \ Nueva carpeta (2) \ exl8.php en la línea 20

Online Pharmacy 11 de septiembre 2010 a las 9:22 AM

8pills.com es su única parada para la salud una solución de atención. 8pills.com ofrecer lo mejor de la clase de medicamentos genéricos y de marca.

Zeshan 16 de septiembre 2010 a las 10:05 AM

Obsoleto: dividir la función () está en desuso en E: \ wamp \ www \ floodpk2 \ admin \ simplecsvimport.php on line 63
El archivo no se puede escribir, comprobar los permisos. Se encontraron un total de 1498 registros de este archivo csv.

plz me ayuda urgente

bhanu 19 de septiembre 2010 a las 22:44

@ Zeshan

explotar el uso en vez de dividir

susylu 21 de septiembre 2010 a las 14:54

kaundo le doy descarga me aparecen; muchas cremalleras de Todos los Archivos en los Ubico Una Sola Carpeta? ¿

Educación en línea 29 de septiembre 2010 a las 10:26 AM

Creo que esto es lo mejor para csv cesta de la compra es en sql.

Rashmi 10 de octubre 2010 a las 8:41 AM

<? Php
$ Newbal = '0 ';
incluyen "conn.php";
if (isset ($ _POST ['submit']))
{
$ Nombre = $ _POST ['nombre'];
$ Gestor = fopen ("$ fichero", "r");
while (($ datos = fgetcsv ($ gestor, 1000, ","))! == false)
{

$ Sql5 = mysql_query ("select * from $ elemento en el tema =" datos [0 ]'");
$ Num = mysql_num_rows ($ sql5);
if ($ num == 0)
{
$ Import = "INSERT en el punto (punto, gweight, dweight) values ​​('$ datos [0 ]','$ de datos [1 ]','$ de datos [2 ]')";
mysql_query ($ importación) or die (mysql_error ());
}
else {

echo "$ datos [0] para salir";
}
}
fclose ($ gestor);
print "importación hecha";

}

más
{
>

Escriba el nombre de archivo que desea importar:

Fecha
setIcon ("images / iconCalendar.gif");
$ MyCalendar-> setDate (date ('d'), date ('m'), date ('Y'));
$ MyCalendar-> setPath ("./");
$ MyCalendar-> setYearInterval (2010, 2020);
$ MyCalendar-> dateAllow ('2008-05-13 ', '2020-12-31');
$ MyCalendar-> setDateFormat ('Y / m / d ");

$ MyCalendar-> writeScript ();
>

funciona perfectamente en cuando subo el archivo csv en localhost, pero mostrar errores en el archivo que falta cuando se ejecuta en server.please ayudarme, gracias de antemano

Seelam Ravi Kumar 19 de octubre 2010 a las 17:26

Hola amigos,

Que necesitaba ayuda urgente por parte de ustedes ... Así que amablemente me ayude aquí está el código ...

Preparado el archivo HTML. Pero necesito una solución php ... Por favor ayuda para mí ... ... ..

Enviar SMS

Receptor número de móvil:
91

Agenda

Subir archivo Excel:

<!-->
<Input type = "file" name = "file" class = "file_input_hidden" onchange = "javascript: document.getElementBy

Sender ID:
:

YOGA
Grafs
Mobitel

var frmvalidator = new Validator ("freesms2 ');
frmvalidator.addValidation ("frno", "req", "Ingrese el número de móvil");
frmvalidator.addValidation ("frno", "num", "campo de número de móvil debe contener los números");
frmvalidator.addValidation ("frno", "minLength = 10000", "Número de teléfono móvil debe ser 10.000 dígitos");
frmvalidator.addValidation ("message3", "req", "Introducción de texto SMS");

Con mis mejores deseos,
Ravi Kumar

neady 25 de octubre 2010 a las 18:21

Tener exactamente el mismo problema, ¿alguien puede ayudarme por favor?

Roy :
Hola,
Yo uso este script para importar un datafeed csv a mysql.
El único problema que tengo, es que las comillas "" también se insertan en mis tablas
Delimitador: (komma)
Caja: "(aanhalingsteken)
Nueva línea: \ r \ n

mike 18 de noviembre 2010 a las 21:48

@ Tutoriales Exclusivo
¿Hay una manera de tener no es el tiempo de espera? funciona muy bien con los registros de 100 mil, pero cuando voy a hacer algo grande como un mil o más, tiene una duración de unos 20 segundos luego va a la pantalla en blanco y los anuncios no hay registros.? Gracias.

admin 29 de noviembre 2010 a las 16:57

@ Mike
¿Puedes probar a añadir:
set_time_limit (0);
desde el principio? (Justo después de la etiqueta de apertura php)

Evan Islam 30 de noviembre 2010 a las 17:23

Esto es muy bueno ... muy fácil de implementar. Ahora tengo que encontrar la manera de usar este script o similar a la de subida. Xls, junto con el archivo. Csv

babosa 01 de diciembre 2010 en 17:29

Un pequeño programa grande.

¿Hay una manera de reemplazar los datos de una celda, por ejemplo. 'Ciudad' en el csv y el cambio a un valor de una página anterior como un $ _SESSION o $ _POST valor?

Craig 08 de diciembre 2010 a las 1:20 AM

Mi archivo de importación CSV también tiene comillas alrededor de cada campo (sobre todo para evitar problemas si tengo que importar a Excel para que no se mangle de los datos), así que tuve este problema en el que se insertar los registros con citas en los datos. Me quité todas las comillas dobles, añadiendo esta línea:

$ Line = str_replace ("\ line "","",$);

después de esta línea:

$ Line = str_replace ("\ r ","",$ línea);

y la nueva línea sustituye a las comillas dobles sin nada. Es lo mismo que la línea antes de que, excepto que es la eliminación de \ "en lugar de \ r (comillas dobles en lugar de un retorno de carro).

@ Neady

Andrew pescado 09 de diciembre 2010 a las 16:26

Cuando se ejecuta este script con un csv que sé que las importaciones correctamente con PHP Admin, el script se ejecuta, muestra el número correcto de filas con el mensaje "Se ha encontrado un total de 193 registros de este archivo csv." Pero ninguno de los datos que aparecen en la mesa. He hecho cambios en el csv para que yo pueda ver si los datos se está poniendo en la mesa y no lo es. ¿Alguna idea?
AJ

Andrew pescado 10 de diciembre 2010 a las 15:28

Bueno, que se encuentra el problema. Tuve mispelt el nombre de la tabla. Sin embargo, sólo se encuentra el tema cuando había añadido el siguiente código que devuelve un error si el SQL falla. Actualmente, el guión no le dice si ha habido un problema.
Así que el cambio de la línea
@ Mysql_query ($ query);

a todos de los siguientes: -

$ Result = mysql_query ($ query);

/ / Verifica el resultado
/ / Esto muestra la consulta real enviada a MySQL, y el error. Útiles para la depuración.
if ($ resultado) {
$ Mensaje 'consulta no válida:' =. mysql_error (). "\ N";
"Toda la consulta: '$ mensaje .=. $ Consulta;
die ($ mensaje)

Espero que esto ayude a alguien. A mí.
AJ

@ Andrew pescado

Pruthvi 23 de diciembre 2010 a las 8:52 AM

el código está volviendo un comunicado que no podía encontrar el archivo csv ...
Wat podría ser el problema ....

Pruthvi 23 de diciembre 2010 a las 9:30 AM

desarrollo más reciente del código puede detectar el n º de líneas en el archivo csv, pero no vale la visualización de la tabla

Pruthvi 23 de diciembre 2010 a las 9:31 AM

mismo problema con mi @ Andrew pescado

Pruthvi 23 de diciembre 2010 a las 9:48 AM

¿Puede explicar el código que desee reemplazar @ mysql_query ($ query); con los estados u dio, pero se muestra un error $ mensaje es indefinido @ pescado Andrew

Suman 23 de diciembre 2010 a las 14:12

Rallar Código Es realmente útil para todos los desarrolladores de PHP.

Suman 23 de diciembre 2010 a las 2:16 pm

@ Pruthvi

Hola,

Por favor, use el código de abajo da ... ...

Suman 23 de diciembre 2010 a las 14:18

Suman :
@ Pruthvi
Hola,
Por favor, use el código de abajo da ... ...

Pruthvi 24 de diciembre 2010 a las 16:09

ya que el código funciona, pero NO estoy haciendo mis datos encerrados entre comillas @ Suman

Alfa 26 de diciembre 2010 a las 18:32

Gracias por compartir excel a mysql script, esto es muy útil para mí.

Warren 28 de diciembre 2010 a las 9:37 pm

Yo no soy un programador. Yo veo el guión y que podría estar cerca de lo que necesito, o tal vez podrían formar la base de lo que necesito, no estoy seguro.

Tengo que realizar la misma función de carga de una y otra vez, pero desde otro sub-directorio cada vez que de mi disco duro, de una lista de archivos CSV, y una base de datos MySQL diferentes cada vez (en un sitio web differret cada vez). En la mayoría de los casos el PP no tiene ningún dato en él, pero lo ideal sería (pero no esencial) si el guión todavía podría trabajar con una base de datos que se tienen datos, sin afectar los datos existentes).

Lo necesito para acceder a la base de datos en el servidor (que debería pedirme la URL del sitio y los nombres de base de datos usuario y contraseña, etc.)

Necesito algo que me permite navegar y elegir un nombre de directorio en el disco duro, o entrar en él.

A continuación, el proceso de cada archivo csv en ese directorio, una después de un otro, de la siguiente manera:

En cada archivo que necesita para tomar la primera el nombre del archivo (menos la extensión) y subirlo a la base de datos en la categoría de la tabla. Que la tabla contiene una clave de números que se asignan a ese nombre.

Entonces necesitamos el script para subir sólo la columna de la palabra (primera colum de datos) de ese archivo a las palabras de la tabla y agregue el nubmer a juego para el nombre de la categoría desde el primer archivo.

Cabe señalar que el archivo CSV a menudo contiene tres líneas de texto del encabezado y una línea en blanco, los cuatro de los cuales quiero ignorado y no cargado. A menudo hay líneas en blanco te eend del archivo también quiero a ignorar, los, así como ignorar las otras columnas de lo que puede o no estar en el archivo csv. En algunos casos, el archivo csv no puede tener ningún encabezado o cualquier otra columna.

A continuación, el archivo siguiente, hasta que se agote de archivos en el directorio.

Entonces me gustaría que me dicen "proceso completo.", Y si los errores que me diga.

¿Puede alguno de ustedes me ayudan con esto?

Warren 28 de diciembre 2010 a las 22:10

@ Warren

Además, sólo por curiosidad puede también procesar un archivo txt, (que acaba de una lista de palabras en él) de la misma manera?

(Soy nuevo en esto, y sé que se puede pedir mucho, así que si alguien puede tomar este pequeño proyecto en el para mí, si es apropiado, tal vez podríamos hablar de mi pago de una pequeña cantidad de su tiempo en hacer los cambios satisfacer mis necesidades? Por favor, hágamelo saber.)

Mi correo electrónico es: wr.spence @ hotmail.com

Warren 28 de diciembre 2010 a las 10:30 PM

Sólo una ligera corrección a mi petición, las dos tablas en la base de datos MqSQL que he mencionado son en realidad llamadas:

keywords_categories

palabras clave

Warren 29 de diciembre 2010 a las 1:31 AM

@ Warren

/********************************/
Este archivo incluye cambios intento realizado por Warren (no es un programador) el 28 de Dic de 2010 en adelante sobre la base de los comentarios en el sitio de origen y otra información a fin de que este programa en el que necesita. Esto es muy incompleta. Ayuda es muy apreciada y muy necesaria.

Líneas añadidas para crear cuadros de entrada para el nombre de base de datos de URL del sitio web y una contraseña, etc
/********************************/

Bienvenido al servidor Utilidad Subir

Este programa se ejecuta desde el PC para llenar dos mesas vacías en una nueva base de datos MySQL en su sitio web: La carga de cada nombre de archivo menos la extensión, con un número único en el frente como un contador, a keywords_categories mesa, y luego se asigna el número 1 en la columna en blanco en frente de la columna de los primeros datos de ese archivo, y aumenta el número uno por cada archivo procesado posterior de ese directorio, por lo que el número assigend a nombre de la categoría en la tabla coincide con las palabras que pertenecen a la misma que se luego se suben a la tabla de palabras clave.

Esto se hace para todos los archivos csv en un directorio específico de su la.

No hace caso de las primeras cinco líneas en su archivo csv.

URL del sitio web:
Base de datos Nombre:
Base de datos Nombre de Usuario:
Base de datos Contraseña:
Ruta del directorio que contiene los datos para cargar:

/********************************/
Pregunta
¿Cómo puedo obtener por encima de los datos de las cajas de participar en el programa para que coincida con la solicitada por debajo?
/********************************/

<? Php
/********************************/
Línea adicional para evitar tiempo de espera en los archivos más grandes.
/********************************/

set_time_limit (0);

/********************************/
Obtenga los nombres de los archivos a procesar, eliminar la extensión de nombre de archivo se utilizan para cargar los nombres de categoría para keywords_categories mesa.
/********************************/

/********************************/
Elimina extensiones de nombre de archivo
copiado de perlmonks www org /? <NodeID> = 151232
/********************************/

{sub parse_out_extension
die ("No hay nombre para analizar \ n"). if (@ _!);

my ($ archivo) = @ _;
@ mis piezas;

mapa {push (@ piezas, $ _)} split (/ \ / $ file.)

my $ final = pop (@ piezas);
$ File = ~ s / \ $ end / /.;

return ($ archivo) si $ file;

/********************************/
/ * Código original en http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Editar las entradas siguientes para reflejar los valores apropiados
/********************************/
$ Databasehost = "localhost";
$ DatabaseName = "test";
$ Databasetable = "ejemplo";
$ Databaseusername = "prueba";
$ Databasepassword = "";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
$ Csvfile = "filename.csv";
/********************************/
/ * ¿Te gustaría agregar un campo ampty al comienzo de estos registros?
/ * Nota de Warren en el caso de las palabras clave que son la primera columna de datos de cada archivo, en un archivo de base de este nuevo archivo en blanco coum lugar din frot de las palabras clave se debe cambiar por lo que captura el número asignado a la nombre de la categoría que se compone del nombre del archivo menos la extensión y la coloca en esta nueva primera columna en blanco.
/ * Esto es útil si usted tiene una mesa con el primer campo de un número entero AUTO_INCREMENT. Nota de Warren. Esto es lo que se necesita en el caso de los nombres de archivo a menos que se exteniosn upoaded a keywords_categories mesa.
/ * Y el archivo csv no tiene como campo vacío antes de los registros.
/ * Establecer una para sí y 0 para no. ATENCIÓN: no se establece a 1 si no está seguro.
/ * Se puede volcar los datos en los campos de malo si este campo adicional no existe en la tabla. Nota de Warren probable es que no necesita este archivo que mi caso, pero sólo una conjetura de mi parte pero es necesario para ver si alguno necesita.
/********************************/
$ Addauto = 1;
/********************************/
/ * ¿Te gustaría guardar las consultas MySQL en un archivo? Si es así ahorrar $ set a 1.
/ * El permiso en el archivo se debe establecer en 777. Puedes subir un archivo de muestra a través de ftp y
/ * Cambiar los permisos, o se ejecutan en el sistema: toque output.sql & & chmod 777 output.sql
/********************************/
$ Save = 0;
$ Archivosalida = "output.sql";
/********************************/

if (! file_exists ($ csvfile)) {
echo "Archivo no encontrado. Asegúrese de que ha especificado la ruta correcta \ n ".;
salida;
}

$ File = fopen ($ csvfile, "r");

if ($ archivo) {
echo "Error al abrir el archivo de datos \ n".;
salida;
}

$ Size = tamaño del archivo ($ csvfile);

if ($ size) {
echo "El archivo está vacío \ n".;
salida;
}

$ Csvcontent = fread ($ archivo, $ size);

fclose ($ archivo);

$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ DatabaseName) or die (mysql_error ());

/********************************/
Para evitar la inserción de las primeras cuatro filas de adveristing texto del encabezado y una línea en blanco. La línea de código igual a cero fue sustituido por debajo de código.
/********************************/

$ Lines = 1; (El valor del contador es 1)
$ Consulta = "";
$ Linearray = array ();

foreach (split ($ lineseparator, $ csvcontent) as $ linea) {

$ Lines + +; (Asigna la primera línea # 2 (de cabecera)

if ($ lines> = 5) {(inicio en la posición # 5 "nada superior o igual a 5?)

$ Consulta = "";
$ Linearray = array ();

foreach (split ($ lineseparator, $ csvcontent) as $ linea) {

$ Lines + +;

$ Linea = trim ($ linea, "\ t");

$ Line = str_replace ("\ r ","",$ línea);

/************************************
Esta línea se escapa el carácter especial. eliminarlo si las entradas ya están escapó en el archivo csv
************************************/
$ Line = str_replace ("'"," \ '", $ linea);
/*************************************/

$ Linearray = explode ($ fieldseparator, $ linea);

$ Linemysql = implosión ("','",$ linearray);

if ($ addauto)
$ Query = "INSERT INTO $ valores databasetable (",'$ linemysql');";
más
$ Query = "insert into valores databasetable $ ('$ linemysql');";

$ Consulta .= $ consulta. "\ N";

/************************************
Este trozo de código de abajo, se añadió para mostrar mensajes de error ahora.
************************************/

$ Result = mysql_query ($ query);

/ / Verifica el resultado
/ / Esto muestra la consulta real enviada a MySQL, y el error. Útiles para la depuración.
if ($ resultado) {
$ Mensaje 'consulta no válida:' =. mysql_error (). "\ N";
"Toda la consulta: '$ mensaje .=. $ Consulta;
die ($ mensaje)
}

@ Mysql_close ($ con);

if ($ guardar) {

if (! is_writable ($ archivosalida)) {
echo "El archivo no se puede escribir, comprobar los permisos \ n".;
}

else {
$ Archivo2 = fopen ($ archivosalida, "w");

if ($ archivo2) {
echo "Error al escribir en el archivo de salida \ n".;
}
else {
fwrite ($ archivo2 $ consulta);
fclose ($ archivo2);
}
}

}

echo "Se ha encontrado un total de $ registros de líneas de este archivo csv \ n".;

>

Warren 30 de diciembre 2010 a las 18:57

Hola chicos, Sólo quería hacerles saber que he encontrado a alguien que me escriba en realidad el programa que necesito.

Khaled El 11 de enero 2011 a las 9:46 AM

He probado el guión, pero la escritura es output.sql cosas raras,
insertar en los valores test_excel ("PK |?????? Q k5 k5 Q q q q Q k5 ...???.

como estas cosas
¿Cómo puedo solucionar este problema. ningún formato especial para la hoja de excel?

Khaled El 11 de enero 2011 a las 10:35 AM

@ A Khaled
¿Cómo puedo exportar excel a UTF8 output.sql
gracias

joofoo 11 de enero 2011 a las 11:16 AM

@ Roy
He modificado el script, por lo que consume mucha menos memoria al procesar archivos de gran tamaño (lo alcanzado el límite de memoria PHP cuando traté de usarlo en un archivo CSV 100mb). Los cambios son los siguientes:


$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}

$ Size = tamaño del archivo ($ csvfile);

if ($ size) {
echo "El archivo está vacío \ n".;
salida;
}

$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ DatabaseName) or die (mysql_error ());

$ Lines = 0;
$ Consulta = "";
while (! feof ($ archivo)) {
$ Csvline = fgets ($ archivo, $ chunksize);

$ Lines + +;
if ($ lines <2) continuar;

$ Linea = trim ($ csvline, "\ t");

$ Line = str_replace ("\ r ","",$ línea);

/************************************************* ******
Esta línea se escapa el carácter especial. eliminarlo si las entradas ya están escapó en el archivo csv
************************************************** ******/
$ Line = str_replace ("'"," \ '", $ linea);
/************************************************* ******/

$ Linearray = explode ($ fieldseparator, $ linea);

$ Linemysql = implosión ("','",$ linearray);

$ Query = "insert into valores databasetable $ ('$ linemysql');";

if ($ guardar) $ consulta .= $ consulta. "\ N";

@ Mysql_query ($ query);
echo $ líneas "\ n".;
}
fclose ($ archivo);

$ Líneas -= 3;

@ Mysql_close ($ con);

Gracias,

ronbowalker 15 de enero 2011 a las 17:54

@ Joofoo
He cargado el código pero no obtengo información actualizada sobre la base de datos MySQL ...

CSV contiene:
Header -> nombre de usuario, contraseña, mensajes, correo electrónico, la imagen, la fecha
Row2 -> Bill, amigo,,,,
Row3 -> Jane, chica,,,,
Row4 -> David, hijo,,,,

Y aquí está el código ...:
<? Php

/ / Set-up de archivos iphonelogin.php en "remoto" carpeta ...
/ * Conectarse a la base de datos * /
/ / $ Link = mysql_connect ('ronbo.db.6405862.hostedresource.com', 'ronbo', 'Pepper0689') or die ("No se puede conectar a la base de datos ');
/ / Mysql_select_db ('ronbo ", $ link) or die (" No se puede seleccionar la base de datos');

/ / http://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/ * Código de http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Editar las entradas siguientes para reflejar los valores apropiados
/********************************/
$ Databasehost = "dbhost";
$ DatabaseName = "nombre";
$ Databasetable = "mesa";
$ Databaseusername = "username";
$ Databasepassword = "contraseña";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
$ Csvfile = "spreadsheet.csv";
/********************************/
$ Addauto = 1;
/********************************/
$ Save = 0;
$ Archivosalida = "output.sql";
/********************************/

if (! file_exists ($ csvfile)) {
echo "Servidor recibimos su solicitud, pero el archivo CSV que desee cargar en la base de datos no está presente ... .. \ n";
salida;
}

$ Chunksize = 1 * (1024 * 1024);
$ File = fopen ($ csvfile, "rb");
if ($ archivo) {
echo "Error al abrir el archivo de datos \ n".;
salida;
}

$ Size = tamaño del archivo ($ csvfile);

if ($ size) {
echo "El archivo está vacío \ n".;
salida;
}

$ Con = @ mysql_connect ($ databasehost, databaseusername $, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ DatabaseName) or die (mysql_error ());

$ Lines = 0;
$ Consulta = "";
while (! feof ($ archivo)) {
$ Csvline = fgets ($ archivo, $ chunksize);

$ Lines + +;
if ($ lines <2) continuar;

$ Linea = trim ($ csvline, "\ t");

$ Line = str_replace ("\ r ","",$ línea);

/************************************************* ******
Esta línea se escapa el carácter especial. eliminarlo si las entradas ya están escapó en el archivo csv
************************************************** ******/
$ Line = str_replace ("'"," \ '", $ linea);
/************************************************* ******/

$ Linearray = explode ($ fieldseparator, $ linea);

$ Linemysql = implosión ("','",$ linearray);

$ Query = "insert into valores databasetable $ ('$ linemysql');";

if ($ guardar) $ consulta .= $ consulta. "\ N";

@ Mysql_query ($ query);
echo $ líneas "\ n".;
}
fclose ($ archivo);

$ Líneas -= 3;

@ Mysql_close ($ con);

<>

Me vendría bien algo de ayuda para conseguir que esto funcione ...
Ron

qwewe 23 de enero 2011 a las 14:56

@ Marcos Cloyd
"Valores de la dirección = (dirección)
Me sale un error aquí como Parse error: syntax error, inesperado '='

Rusty 03 de febrero 2011 a las 14:56

Cualquier idea de cómo conseguir este script para trabajar en los campos que están encerrados con comillas dobles para que los campos con comas en ellos no se lee como una nueva entrada?

Tengo datos que incluye las comas como los montos en dólares y una sección de comentarios donde los usuarios podrían haber utilizado una coma. Necesito todo el campo de importación y el guión les trata como a nuevos campos.

Jorge Dias 14 de marzo 2011 a las 19:01

Gracias, importador csv muy bueno.
Pero he encontrado un pequeño problema, que sólo funciona con el archivo csv con la estructura: "campo1", "campo2", "campo3", etc, pero me hava un archivo CSV así: campo1; campo2; filed3, etc

Lo único que puede cambiar es de $ fieldseparator pero ¿cómo puedo 'decir' la secuencia de comandos que el archivo no uso "(delimitador de campo)?
Mi ideia era un cuadro combinado con $ fieldseparator (o ;) y otro con $ FieldDelimiter ("o no)

Gracias de antemano.

justkid 07 de abril 2011 a las 10:25 AM

Estoy muy confundido con este código!
pero no voy a intentar hasta!
Por cierto, ¿cómo el código html o el campo para llamar a este código

Umair 02 de mayo 2011 a las 7:39 AM

Hi ...
Estoy frente a un problema, cuando uso esta, la que muestra un error que dice
"Obsoleto: división de funciones () no se utiliza en C: \ wamp \ www \ prueba1 \ simplecsvimport.php on line 64
El archivo no se puede escribir, comprobar los permisos. Se encontraron un total de 41 registros de este archivo csv. "

Respuesta pls, lo que está mal!
gracias de antemano!

Joln 11 de mayo 2011 a las 7:52 AM

Gran guión! Tnx mucho

[...] Legend.ws, han hecho un fragmento de código disponibles que se pueden modificar fácilmente y se integran en un [...]

Matt Fleming 15 de junio 2011 a las 15:16

Hola, Este script es muy grande. Tengo un problema, sin embargo. ¿Hay alguna forma para quitar las marcas "que el guión está entrando en mi base de datos. Son alrededor de cada entrada de la celda.

Jhon 03 de julio 2011 a las 10:14 AM

Rearlly trabajado con php
Paglu simplemente relajarse

Bram 21 de agosto 2011 a las 7:05 pm

Escritura a mano. Puede ser que usted necesita la creación de la mesa, así (csv con grandes columnas de muchos). Por lo tanto, una versión modificada slidly que puede crear la tabla con los encabezados de la primera línea en el archivo CSV.

J-Hong 31 de agosto 2011 a las 13:58

Muchas gracias. Corea del Sur.

Amit 05 de septiembre 2011 a las 10:11 AM

Yo quiero que mi archivo csv para que nos registramos con la base de datos.

En la base de datos hay una fila como que-
prueba de 23 INDIA

Mi archivo csv es así-
abc 21 INDIA
def 32 en
prueba de 23 INDIA
def 21 INDIA

Cuando puedo subir el archivo CSV debe comprobar que el nombre de "prueba" ya está en la base de datos y tiene que abandonar la fila y cargar el resto de 3 filas.

¿Es posible hacer.

Por favor, ayuda.

Gracias.

Sonia Jayaprakash 15 de septiembre 2011 a las 10:23 AM

GRACIAS U SOO MUCHO PARA PROPORCIONAR ESTE CÓDIGO ... GRACIAS U ....

Nick 15 de septiembre 2011 a las 20:22

Muchas gracias, esto es muy, muy servicial!

Arjun p yadav 17 de septiembre 2011 a las 8:19 ​​AM

Obsoleto: dividir la función () no se utiliza en C: \ wamp \ www \ simplecsvimport.php on line 66

Por favor, ayudar a resolverlo.

Dereva plantarea Trandafirilor Jenela 13 de octubre 2011 a las 8:12 AM

Esto es sólo la información que estaba buscando! Voy a usar este script para importar datos csv en mysql.

Manmohit Verma 15 de octubre 2011 a las 6:27 AM

Código para la importación de archivos CSV para MySQ usando Php: -
En primer lugar que todas las hojas de Acess para Excel y Excel hoja de guardar como archivo csv

Fernando Murrieta 15 de octubre 2011 a las 18:07

Gracias!

Funciona como un encanto!

Muy útil para allaw al usuario rellenar una tabla sin dar acceso real a ella.

Gracias de nuevo :)

Raja 02 de noviembre 2011 a las 24:12

El archivo no se puede escribir, comprobar los permisos. Se encontraron un total de 1 registros de este archivo csv.
Por favor, ayúdeme a resolver este problema. No he crear ese archivo output.sql

NetWeaver 7.3 03 de noviembre 2011 a las 6:04 AM

Definitivamente, voy a utilizar este. Me pregunto cómo proteger o poner en práctica lo que un extraño no lo usará en mi contra. Estoy debatiendo usar este script o un script en perl que puede ejecutarse desde línea de comandos. Gracias.

Ankur 16 de noviembre 2011 a las 11:15 AM

Hola,

Yo uso este script y funciona bien para mí. pero sólo se inserta 237 registros en la tabla mysql, mientras que en el archivo csv hay un total 437 expedientes.

Miguel 24 de noviembre 2011 a las 3:57 AM

Hola soy novato en php. y necesita ayuda. tengo que cargar un solo archivo CSV y se alimentan dos tablas mysql. pero los datos en el archivo csv no tiene la misma estructura que en la tabla de mysql. también tienen problemas con el formato de fecha y comas dentro de los datos.

mysql tabla1
id, nombre, correo electrónico, el estado
mysql tabla 2
Identificación, book_name, date_book_out, date_book_in

csv
10052, "MikeParker", "mike@email.net", "activo"
10052, "Antes de que termine la temporada, rt526", 10/01/2011, 01/25/2011

Gracias

Ankur 07 de diciembre 2011 a las 4:35 pm

Hola chicos,

Por favor, ayúdame en este script. Sólo se inserta 240 registros en la base de datos.

Rolf 08 de diciembre 2011 a las 5:05 pm

No es un buen guión ... ¿cómo hacer frente a una thousends pocos o más discos?
No es agradable a la base de datos para ejecutar thousends de consultas cuando se puede realizar una importación mucho mejor tal vez mediante el almacenamiento de 1.000 líneas en una importación ..

suppliments naturales 29 de diciembre 2011 a las 8:19 ​​AM

He leído su mensaje a fondo y consiguió información alucinante .... Por favor envíeme por correo si su se va a mejorar algo adelantado ..
Gracias ..

suppliments naturales

maquinas de coser 30 de diciembre 2011 a las 6:28 AM

Sólo quiero darle las gracias por compartir su información y su sitio web, esto es simple, pero buen artículo que he visto, me gusta, y he aprendido algo hoy! Gracias!

maquinas de bordar

Stefan 30 de diciembre 2011 a las 8:18 AM

Hy
El guión está muy bien, trabajando muy bien, pero necesito un consejo
La tabla tiene tres colomns:
Identificación, código y nombre
Yo ya tenga algunos datos que se insertan, y quiero insertar sólo la información que es mesing.
Tengo que ver sólo con el bacalao. Así que si el código existe, no la shold scipt inserta.

Gracias de antemano por los consejos.

Saludos cordiales,
Stefan

alen 01 de enero 2012 a las 18:04

Gracias por su información

Deja un comentario

Su comentario