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.

Muy útil, gracias.
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.
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"; /*********** ************************************************** *******************************/ [...]
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. [...]
[...] /******************************************** ************************************************/ / * 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"; /*********** ************************************************** *******************************/ [...]
Wow es genial ... no tenía idea después de leer su código ... agradezco mucho
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 ...?
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
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.
Estoy recibiendo este error archivo no encontrado. Asegúrese de que ha especificado la ruta correcta.
¿Puede cualquier respuesta rápida que tengo un bbqrest.csv csv en la ruta correcta (root) ..
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.
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.
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
)
/ / 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 + +;
}
}
}
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?
Brad, si lo hubiera descargado antes de la semana pasada, sustituir el '<?' en la parte superior con "<? php '(quitar el espacio)
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?
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?
¿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.
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);
}
Jefe Buen trabajo
no insertar en la tabla de base de datos donde desee insertarlo ..: (
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?
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.
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.
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
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
En cuanto a la cuestión de las cotizaciones, usted puede usar esto:
$ Linearray = preg_split ("/,(?=(?:[^ \ "] * \" [^ \ "] * \ ")*(?![^ \"] * \ "))/", $ line );
Saludos,
Gaz.
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
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
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
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
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?
@ 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.
@ 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)
@ 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.
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"
@ 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?
¿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?
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
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
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
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!
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";
}
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
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
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
[...] 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 ... [...]
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
@ 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)
@ 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.
¿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?
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?
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
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`);
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
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
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
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")
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.
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);
}
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?
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?
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
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 ...
¡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!
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
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 ".;
Esto funciona muy bien. ¡Gracias!
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
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.
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
@ Zeshan
explotar el uso en vez de dividir
kaundo le doy descarga me aparecen; muchas cremalleras de Todos los Archivos en los Ubico Una Sola Carpeta? ¿
Creo que esto es lo mejor para csv cesta de la compra es en sql.
<? 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
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
Tener exactamente el mismo problema, ¿alguien puede ayudarme por favor?
@ 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.
@ Mike
¿Puedes probar a añadir:
set_time_limit (0);
desde el principio? (Justo después de la etiqueta de apertura php)
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
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?
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
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
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
el código está volviendo un comunicado que no podía encontrar el archivo csv ...
Wat podría ser el problema ....
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
mismo problema con mi @ Andrew pescado
¿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
Rallar Código Es realmente útil para todos los desarrolladores de PHP.
@ Pruthvi
Hola,
Por favor, use el código de abajo da ... ...
ya que el código funciona, pero NO estoy haciendo mis datos encerrados entre comillas @ Suman
Gracias por compartir excel a mysql script, esto es muy útil para mí.
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
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
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
/********************************/
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".;
>
Hola chicos, Sólo quería hacerles saber que he encontrado a alguien que me escriba en realidad el programa que necesito.
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?
@ A Khaled
¿Cómo puedo exportar excel a UTF8 output.sql
gracias
@ 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,
@ 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
@ Marcos Cloyd
"Valores de la dirección = (dirección)
Me sale un error aquí como Parse error: syntax error, inesperado '='
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.
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)?
y otro con $ FieldDelimiter ("o no)
Mi ideia era un cuadro combinado con $ fieldseparator (o
Gracias de antemano.
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
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!
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 [...]
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.
Rearlly trabajado con php
Paglu simplemente relajarse
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.
Muchas gracias. Corea del Sur.
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.
GRACIAS U SOO MUCHO PARA PROPORCIONAR ESTE CÓDIGO ... GRACIAS U ....
Muchas gracias, esto es muy, muy servicial!
Obsoleto: dividir la función () no se utiliza en C: \ wamp \ www \ simplecsvimport.php on line 66
Por favor, ayudar a resolverlo.
Esto es sólo la información que estaba buscando! Voy a usar este script para importar datos csv en mysql.
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
Gracias!
Funciona como un encanto!
Muy útil para allaw al usuario rellenar una tabla sin dar acceso real a ella.
Gracias de nuevo
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
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.
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.
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
Hola chicos,
Por favor, ayúdame en este script. Sólo se inserta 240 registros en la base de datos.
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 ..
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
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
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
Gracias por su información