Aléatoire divagations Tech
19 février
Ceci est un simple script qui vous permettra d'importer des données CSV dans votre base de données. Cela vient très pratique car vous pouvez simplement modifier les champs appropriés, de la télécharger avec le fichier csv et l'appeler depuis le web et il fera le reste.
Il vous permet de spécifier le délimiteur dans ce fichier csv, si c'est un coma, une tabulation etc Il vous permet également de choisir le séparateur de ligne, vous permet d'enregistrer la sortie vers un fichier (appelé un dump de données SQL).
Il vous permet également d'inclure un champ vide au début de chaque ligne, qui est habituellement une clé entière auto incrémentation primaire.
Ce script est utile surtout si vous n'avez pas de phpmyadmin, ou vous ne voulez pas les tracas de la connexion et préférez une solution en quelques clics, ou tout simplement vous êtes un mec invite de commande.
Juste s'assurer que la table est déjà créée avant d'essayer de transférer les données.
Veuillez poster vos commentaires si vous avez obtenu un rapport de bug.
133 réponses pour "script PHP pour importer des données csv dans mysql"
Très utile, merci.
J'ai l'habitude de passer par phpmyadmin, mais vrai, dans un cas ne l'avez pas installé, et ne pas avoir accès au shell (comme la plupart des fournisseurs d'hébergement partagé), ce qui peut se révéler très utiles.
Merci beaucoup de cette sauvé beaucoup de temps! Un script de Nice.
[...] Eh bien, aujourd'hui je veux vous présenter une autre méthode d'obtention de votre fichier csv dans SQL, en utilisant le code PHP. Pour ce morceau de code, le crédit va à pleine légende. Vous devez vous assurer que la base de données est déjà créée avant la date dépotoir. /************************************************* *******************************************/ / * Code à http: / / legend.ws / blog / conseils-astuces / csv-php-mysql-import / / * Modifiez les entrées ci-dessous afin de refléter les valeurs appropriées /****************** ************************************************** ************************/ $ databasehost = "localhost"; $ databasename = "test"; $ databasetable = "échantillon"; DatabaseUserName $ = " test "; $ databasepassword =" "; $ fieldseparator =" "; $ lineseparator =" n "; csvfile $ =" bbqrest.csv "; /***************** ************************************************** *************************/ / * Voulez-vous ajouter un champ ampty au début de ces dossiers? / * Cette fonction est utile si vous avez une table avec le premier champ étant un entier auto_increment / * et le fichier CSV n'est pas comme le champ vide, avant les enregistrements. / * Définir 1 pour oui et 0 pour non. ATTENTION: ne pas mis à 1 si vous n'êtes pas sûr. / * Cela peut dépotoir de données dans les domaines de mal si ce champ supplémentaire n'existe pas dans le tableau /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Voulez-vous enregistrer les requêtes MySQL dans un fichier? Si oui définir $ enregistrez-1. / * Permission sur le fichier devrait être fixé à 777. Soit télécharger un fichier via FTP et pour l'échantillon / * changer les permissions, ou d'exécuter à l'invite: output.sql touch & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ save = 1; outputfile $ = "output.sql"; /*********** ************************************************** *******************************/ [...]
Salut à tous, une petite modification pour les valeurs auto incrémentation dans la colonne 1 (champ id)
voir la variable $ count.
ola, Enrico.
/ / $ Con = @ mysql_connect ($ databasehost, $ DatabaseUserName, $ databasepassword) or die (mysql_error ());
/ / @ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Lignes = 0;
$ Requêtes = "";
$ LineArray = array ();
$ Count = 0;
foreach (split ($ lineseparator, $ csvcontent) en tant que $ ligne) {
$ Count = $ count + 1;
$ Lignes + +;
$ Ligne = trim ($ ligne, "\ t");
$ Ligne = str_replace ("'"," \ '", $ ligne);
$ LineArray = explode ($ fieldseparator, $ ligne);
$ Linemysql = implode ("','",$ LineArray);
$ Query = "INSERT INTO` votre table db `VALUES ('$ count', '$ linemysql');";
$ Requêtes .= $ requête. "\ N";
@ Mysql_query ($ query);
}
/ / @ Mysql_close ($ con);
[...] Sur une note similaire, voici un script pré-fait que son auteur dit va importer un fichier CSV dans MySQL: script PHP pour importer des données csv dans mysql. [...]
[...] /******************************************** ************************************************/ / * Code à https://legend.ws/blog/tips-tricks/csv-php-mysql-import/ / * Modifiez les entrées ci-dessous afin de refléter les valeurs appropriées /************* ************************************************** *****************************/ $ databasehost = "localhost"; $ databasename = "xxxxx"; $ databasetable = "xxxx" ; $ DatabaseUserName = "xxxx"; $ databasepassword = "xxxx"; $ fieldseparator = ""; $ lineseparator = "n"; csvfile $ = "xport/2008_BF.csv"; /********* ************************************************** *********************************/ / * Voulez-vous ajouter un champ ampty au début de ces dossiers ? / * Cette fonction est utile si vous avez une table avec le premier champ étant un entier auto_increment / * et le fichier CSV n'est pas comme le champ vide, avant les enregistrements. / * Définir 1 pour oui et 0 pour non. ATTENTION: ne pas mis à 1 si vous n'êtes pas sûr. / * Cela peut dépotoir de données dans les domaines de mal si ce champ supplémentaire n'existe pas dans le tableau /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Voulez-vous enregistrer les requêtes MySQL dans un fichier? Si oui définir $ enregistrez-1. / * Permission sur le fichier devrait être fixé à 777. Soit télécharger un fichier via FTP et pour l'échantillon / * changer les permissions, ou d'exécuter à l'invite: output.sql touch & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ save = 1; outputfile $ = "output.sql"; /*********** ************************************************** *******************************/ [...]
Wow est cool ... avait l'idée après avoir lu votre codage ... merci beaucoup
Débutant Total - déchirer mes cheveux à essayer d'importer csv dans Excel phpMyAdmin (sur Mac). Aimeraient savoir exactement où et ce que je fais avec ce script php ...?
Steve,
Vous allez placer ce script dans un dossier accessible sur le Web, après avoir changé les variables qui doivent être changées. Lire les commentaires dans le script pour savoir ce dont vous avez besoin de spécifier. Ensuite, appeler le script dans un navigateur Web, comme:
https://www.example.com/path-to-script/simplescvimport.php
ce serait une bonne idée d'ajouter d'éviter têtes au sein du CSV d'être soumis dans la base. Ou de créer un script qui sort de la première rangée et crée une db en utilisant ces valeurs que les noms de colonnes.
Je reçois ce fichier ne se trouve pas d'erreur. Assurez-vous que vous avez spécifié le bon chemin.
Peut-vite une réponse J'ai un fichier csv bbqrest.csv au chemin correct (racine) ..
Rengaraj,
Le fichier CSV doit être dans le même endroit que le fichier PHP.
En outre, vous n'avez pas vraiment d'utiliser le même nom de fichier CSV.
bbqrest.csv est un exemple, remplacez ce nom de fichier avec vos propres.
Ne tient pas compte des domaines tels que cette ligne:
Fname, lname, «Company, Inc", Ville, État, code postal
Société et se Inc divisée en deux colonnes différentes.
Eh bien, voici le correctif à mon commentaire précédent:
insérez-les dans entre:
$ LineArray = explode ($ fieldseparator, $ ligne);
... Insérer des extraits de code ci-dessous ....
$ Linemysql = implode ("','",$ LineArray);
Trouve et conserve toutes les "commandes, plus de choses» ensemble avant qu'il implose.
$ A = "";
$ B = "";
$ Qoutecount = 0;
for ($ x = 0; $ x -1) {
$ Qoutecount + +;
if ($ qoutecount == 1)
$ A = $ x; / / stocke la première instance
elseif ($ qoutecount == 2) {
$ Quotecount = 0;
$ B = $ x; / / stocke le second cas
/ / QU'IL NE ... compiler tous les éléments de $ à $ b une dans $ a et ignorer les éléments plus rien après $ a à b $ en nouveau tableau;
Newa $ = ""; / / initialisation nouvelle chaîne.
for ($ z = $ a; z $ a & & $ y
)
/ / Sauter parce qu'elle relève les éléments du tableau mauvaise
d'autre
$ Newarray [$ y] = str_replace ('"',",$ LineArray [$ y]);
$ LineArray = array_values (newarray $); / / réinitialiser les clés de la nouvelle matrice
$ X + +;
}
}
}
je reçois le premier tant de le couper et le reste simplement le code dans mon navigateur. Je sais que PHP fonctionne parce que le reste du site fonctionne.
Je n'ai passer à php5-ce que ça?
Brad, si vous l'aviez téléchargé plus tôt que la semaine dernière, de remplacer le "<?" en haut par "<? php '(enlever l'espace)
Robbie, merci pour vous plus, il est tout à fait bienvenue. Malheureusement, cela ne fonctionne pas tout de suite quand je le copie. Je pense qu'il manque quelque chose parce que le code est étalé sur deux postes.
Pourriez-vous vérifier le code tel qu'il apparaît ici? Est-ce quelque chose qui manque?
Salut à tous, merci scripts agréable. Quand il marche je reçois:
Fatal error: temps d'exécution maximum de 30 secondes dépassé dans la ligne 63
Est-il quelque chose que je peux faire pour contourner cela?
Quelle est la taille du fichier que vous essayez d'importer?
dans tous les cas, essayez d'ajouter la ligne suivante après les balises d'ouverture initiale:
set_time_limit (300);
Cela vous donnera le script jusqu'à 5 minutes (300 secondes) du temps d'exécution.
Remplacement 300 avec 0 va lui permettre de prendre autant de temps que nécessaire.
Salut à tous,
J'ai fait une petite modification à votre code, de sorte qu'il fonctionne comme un importateur CSV, comme il se doit.
CSV-s de première ligne devraient tenir les noms des colonnes que vous souhaitez importer, donc le changement de la boucle foreach:
foreach (split ($ lineseparator, $ csvcontent) en tant que $ ligne) {
$ Lignes + +;
$ Ligne = trim ($ ligne, "\ t");
$ Ligne = str_replace ("\ r la ligne ","",$);
/ * Récupération noms de colonnes de la première ligne de CSV * /
if ($ lignes == 1) {
$ Columns = explode ($ fieldseparator, $ ligne);
$ Columnsql = implode (",",$ colonnes);
echo $ columnsql;
continuer;
}
/************************************
Cette ligne échappe le caractère spécial. l'enlever si les entrées sont déjà échappés dans le fichier csv
************************************/
$ Ligne = str_replace ("'"," \ '", $ ligne);
/*************************************/
$ LineArray = explode ($ fieldseparator, $ ligne);
$ Linemysql = implode ("','",$ LineArray);
if ($ addauto)
$ Query = "INSERT INTO $ databasetable (columnsql $) VALUES ('$ linemysql');";
d'autre
$ Query = "INSERT INTO $ databasetable (columnsql $) VALUES ('$ linemysql');";
$ Requêtes .= $ requête. "\ N";
@ Mysql_query ($ query);
}
Chef de travaux de Nice
il n'a pas l'insérer dans la table de la base où je veux insérer ..: (
Je ne peux obtenir la première ligne de mon fichier CSV à importer dans la base de données.
Voici une copie du fichier de log:
insérer dans les valeurs de production («, '2008-10-21 ', '50', '50 ', '50', 'ceci est la première ligne des notes», «ce n'est note la ligne 2», «Ceci est la ligne 3 notes », '0000-00-00 ', '0000-00-00', '0000-00-00 ', '456 Morningside Ave", "Ste. 512», «Brooklyn», «NY», '10023', «Joe», «Client 1 ');
insérer dans les valeurs de production («, '2008-10-09 ', '50', '50 ', '50', 'ceci est la première ligne des notes',",",' 09/10/2008, '2008 -10 à 14 ', '0000-00-00', '456 Morningside Ave »,« ste 512 »,« Brooklyn »,« NY », '10023 ',' Joe ',' à la clientèle 1. ');
insérer dans les valeurs de production («, '2008-10-14 ', '25', '25 ', '25', 'NOTES 1',",",' 14/10/2008, '2008-10-17 ',' NULL ', '555, quelque part »,« bureau 123 »,« New York »,« nouvelles y', '10001 ',' Joe ',' Nom 1 ');
insérer dans la production
insérer dans la production
insérer dans les valeurs de production («, '2008-10-17 ', '50', '50 ', '50', 'ceci est la première ligne des notes',",",' 03.10.2008, 0000 -00 à 00 ', '0000-00-00', '456 Morningside Ave »,« ste 512 »,« Brooklyn »,« NY », '10023 ',' Joe ',' à la clientèle 1. ');
insérer dans les valeurs de production («, '2008-10-18 ', '25', '25 ', '25', 'NOTES 1',",",' 04/10/2008, '0000-00-00 », '0000-00-00 ', '555, quelque part», «bureau 123», «New York», «nouvelles y', '10001 ',' Joe ',' Nom 1 ');
insérer dans la production
insérer dans les valeurs de production («, '2008-10-20 ', '34', '34 ', '34', 'nouveaux billets',",",' 06/10/2008, '0000-00-00 », '0000-00-00',",",",",",' Steve',");
insérer dans les valeurs de production («, '2008-10-21 ', '12', '12 ', '12', 'note que même les nouvelles',",",' 07/10/2008, '0000-00- 00 ', '0000-00-00',",",",",",' marque',");
insérer dans la production
insérer dans la production
insérer dans la production
insérer dans la production
insérer dans les valeurs de production («, '2008-10-16 ', '0', '0 ', '0', 'plus tard encore',",",' 12/10/2008, '0000-00-00 », '0000-00-00',",",",",",",");
insérer dans les valeurs de production («, '2008-10-17 ', '0', '0 ', '0', 'plus tard encore',",",' 13/10/2008, '0000-00-00 », '0000-00-00',",",",",",");
insérer dans les valeurs de production («, '2008-10-18 ', '0', '0 ', '0', 'plus tard encore',",",' 14/10/2008, '0000-00-00 », '0000-00-00',",",",",",");
insérer dans la production
insérer dans les valeurs de production («, '2008-10-01 ', '34', '34 ', '34', '',",",' dernières 02/10/2008, '2008-10-04 », '2008-10-04',",",",",",' Bruce ');
insérer dans les valeurs de production (",");
Il dit qu'il est d'insérer 20 enregistrements, mais seulement le premier qu'il fait dans la base. Toute pensée?
Salut à tous,
Merci pour le script. Je suis un Noob au PHP et MySQL alors j'ai vraiment apprécier quelque chose comme cela. Je me suis aussi loin que la génération du "fichier n'est pas accessible en écriture, vérifier les autorisations" message d'erreur dans mon navigateur. Peut quelqu'un s'il vous plaît expliquer le commentaire à propos de la mise la permission à 777? J'utilise un fichier Excel généré. Csv? Merci d'avance.
Salut Marc,
d'abord, il fait référence au fichier sélectionné dans la variable $ outputfile.
Ensuite, ce fichier doit être accessible en écriture. Je suppose que vous êtes sous Linux, pas Windows, comme ce n'est généralement pas un problème avec Windows.
Sur Linux, il suffit de SSH à la machine, changer pour le répertoire où le fichier de sortie est, et tapez: chmod 777 nomfichier
où "filename" est le nom réel du fichier.
Si vous n'avez pas de SSH, de nombreux clients FTP changement de permission de soutien. À cette fin, FTP pour le dossier contenant le fichier de sortie, puis sélectionnez ce fichier, et de localiser à partir de ce logiciel ftp l'option pour changer la permission. Réglez-le à 777, ou «lire, écrire, exécuter» pour chacun.
Bonjour à tous,
J'adore ce script, et il fonctionnait très bien, tout à coup, le script l'habitude d'insérer des enregistrements. Le script est terminé, et même le nombre de sorties record, mais ne touche pas la base de données du tout ...
Des idées?
Merci
C
Cher Chris,
s'il vous plaît remplacer:
@ Mysql_query ($ query);
avec:
@ Mysql_query ($ query) or die (mysql_error ());
et laissez-moi savoir ce que l'erreur qu'il te donne
En ce qui concerne la question des citations, vous pouvez simplement utiliser ceci:
$ LineArray = preg_split ("/,(?=(?:[^ \ "] * \" [^ \ "] * \ ")*(?![^ \"] * \ "))/", $ ligne );
Cheers,
Gaz.
il est dit de charger ce dans la base de données
LOAD DATA LOCAL INFILE 'PATH' dans les champs de la table tableau terminé par ',' LINES TERMINATED BY '\ n';
J'ai changer le chemin et la table de son aller dans mais il me donne une erreur que son code mauvaise syntaxe 1064
quelqu'un peut-il me donner quelques conseils sur quoi faire
Merci
Stan
Salut Stanley, le problème est avec les guillemets simples. Le logiciel blog ici les réécrit. Il suffit de remplacer "et" avec "
PS: la commande ci-dessus est de charger directement un fichier csv dans la base de données à partir de l'invite mysql. C'est gentil mais non liée au script ci-dessus
Salut à tous!
Semblent avoir le script ... travailler exept qu'il n'écrit pas de données MySQL à l'...
Comme avec Chris: Le script est terminé, et même le nombre de sorties record, mais ne touche pas la base de données à tout ... mais me dit: Trouvé un total de 1 enregistrements dans ce fichier csv.
Que dois-je faire le mal (im un noob au PHP et MySQL)
Merci
Claus
Salut à tous
J'utilise Drupal pour construire un nouveau site Internet, le défi que je vais avoir droit maintenant, c'est que j'ai besoin d'importer des données depuis un fichier CSV dans une base de données MySQL qui a partagé les tables, par conséquent, certains des champs dans lesquels j'ai besoin d'importer des données CSV sont dans des sections différentes de la même base de ce script va travailler pour moi? Si ce n'est pas cela peut-il être importé csv en utilisant une autre méthode?
S'il vous plaît conseiller, vous remercier pour toute l'assistance.
Cordialement
Adrian
Merci pour le script. Très compréhensible.
Comment puis-je modifier ce script afin qu'il récupère et stocker un fichier csv à partir d'Internet dans MySQL?
@ Adrien
Bonjour Adrien.
Drupal, comme vous l'avez noté, a des structures de tables complexes. Selon ce type de données que vous importez, il est très probable que ces données doit être scindé en plusieurs tables, généralement avec une clé étrangère commune tels que l'ID de nœud.
Malheureusement, le script ci-dessus ne permettrait pas le faire.
@ Okoth
Bonjour Okoth.
Très probablement, vous pouvez vous débarrasser des lignes 33-54 et les remplacer par cette seule ligne:
$ = @ File_get_contents csvcontent ("https://...»);
remplacer les points par l'URL appropriée (URL direct vers le fichier CSV)
@ Noël
Bonjour Noël.
Le CSV contiennent réellement un seul dossier?
Depuis le script atteint le stade où il affiche le nombre de dossiers, je suppose qu'il n'a pas manqué quand il connecté à la base de données (lignes 56-57) donc ce n'est pas le problème.
Il est possible que la requête pour insérer des données est un échec.
Essayez de remplacer la ligne 88 avec:
mysql_query ($ query) or die (mysql_error ());
et vérifier quelle est l'erreur que vous obtenez.
Bonjour,
Je voudrais vraiment utiliser ce script, mais je ne suis pas sûr de ce que je fais mal. Je reçois le même problème mentionné ci-dessus avec des données ne se charge pas dans la db. Il trouve le nombre exact de lignes, mais ne montre rien dans la db.
J'ai changé la ligne 88 @ mysql_query ($ query) or die (mysql_error ());
et de faire passer ce message "Nombre de colonnes ne correspond pas au nombre de valeur à la ligne 1"
@ Andy Brotherton : Cela signifie que la requête est d'essayer d'insérer un enregistrement avec un nombre de colonnes qui ne correspond pas à celui de la table de base de données.
1) Etes-vous sûr que le fichier CSV a exactement le même nombre de colonnes que la table dans la base de données?
2) est le séparateur de champ dans ce fichier CSV vraiment une virgule? ou est-ce un onglet, par exemple, ou autre? Si ce n'est pas une virgule, changer la valeur de $ fieldseparator sur la ligne 12
3) Le tableau doit être déjà créé dans la base de données avant de tenter de charger des données en elle. Etes-vous sûr que vous l'avez?
Comment puis-je vider mon tableau déjà rempli avant d'insérer le nouveau fichier?
ou puis-je mettre à jour une entrée déjà existante?
TRUNCATE UPDATE? Comment puis-je obtenir ce dans la requête?
la commande est: tablename tronquer.
vous pouvez insérer le texte suivant sur la ligne 58:
Mysql_query @ ("tronquer $ databasetable");
mais ce n'est pas réversible! soyez donc prudent
Salut, il me dit le nombre d'enregistrements, mais pas de mettre les données en base de données
Espoir vous pouvez aider
Nathan
J'ai besoin de télécharger automatiquement les données à partir d'un serveur distant. C'est un fichier CSV, et j'ai besoin de décompresser, et de stocker les données dans une base de données MySQL que j'ai créé. Il ya plusieurs bases de données. La première section ci-dessous est l'une des bases de données que quelqu'un m'a aidé avec et ça fonctionne à merveille. J'ai mis en place un cron job et il le télécharge automatiquement comme prévu. Cependant, je n'ai plus de bases de données et cant get les autres de travailler.
Section ci-dessous fonctionne très bien!!
--------------------------
#! / Bin / bash
deleteparam = '-delete-after';
# Deleteparam = "
# Répertoire = '-directory-prefix = / $ HOME / mondossier / mondossier /'
= répertoire "
# Userpwd = '-http-user = bla-http-password = blah'
toupper () {
echo $ 1 | tr "[: lower:]« "[: upper:]"
}
# If [-z "$ 1"], puis
# Echo utilisation: table 0 $
# Exit
# Fi
ZIP = nom du fichier de données dans le serveur distant
ZIP = `toupper $ ZIP`
# Le fichier dans le zip a un de moins _
DATA = nom de la table dans ma base mysql
DATA = `toupper $ DATA`
# Rm $ TABLE.csv.zip
# Rm $ data.csv
cd / $ HOME / mondossier / mondossier /
####### Obtenir le résidentiel
wget -O $ ZIP.csv.zip
sleep 10
####### Décompressez
pwd
ls-la
décompressez-o $ ZIP.csv.zip
sleep 10
####### Le charger
wget-verbose $ deleteparam répertoire $ $ userpwd https://mywebsite/myfolder/import.php?table = $ DATA
le sommeil 300
###### Supprimer les fichiers
rm $ ZIP.csv.zip
rm $ data.csv
sleep 10
_ ---------------------------
TOUT CELA AU DESSUS merveilles
C'EST CE QUE J'AI BESOIN D'AIDE AUX
--------------------------
1. J'ai besoin d'un script pour ajouter dans le fichier ci-dessus qui permettent de télécharger les photos. Si vous voyez ci-dessous j'ai besoin d'un script qui récupère automatiquement la date actuelle et le temps que le script est exécuté. Il détient le serveur pic des 7 derniers jours et est constamment mis à jour. Une fois ce script est exécuté, il va télécharger les données dans la table que j'ai créé.
2. Ensuite, j'ai besoin d'un script qui interroge la base de données mysql à la recherche d'entrées qui ont des photos, puis de récupérer les photos directement depuis leur réelle des serveurs distants. Ce fichier CSV ne télécharger des photos, juste des données que je peux utiliser pour exécuter un script pour récupérer les photos à un endroit donné. Voir ci-dessous.
Voici les instructions que j'ai reçues.
INSTRUCTIONS
Photos de données est récupéré par HTTP. Les données de photos est mis à jour une fois par jour et est disponible pour téléchargement en format CSV. Vous pouvez ensuite écrire un script en utilisant les données du fichier CSV pour pointer vers les images sur notre serveur d'images. Vous devez fournir une valeur pour la last_updt Query String> 'AAAAMMJJ HH: MM: SS' pour l'URL pour renvoyer les données. Le last_updt domaine est la valeur de date pour la dernière fois qu'une photo a été changé sur la liste.
Vous aurez besoin de remplacer le user_code et les détenteurs de lieu de mot de passe (XXXX) avec les identifiants de connexion qui vous sont fournis.
Étape 1: Pour récupérer la photo principale liste de données fichier CSV aller à l'URL ci-dessous.
Etape 2: Le tableau de données doit télécharger les photos dans un format CSV.
Étape 3: Utiliser les drapeaux Y et le numéro ML dans les données que vous pouvez lien vers nos sites d'image.
Notre chemin principal répertoire de l'image est comme suit:
https://remoteserver/folder/folder/folder/Last3DigistsofML # / # cotation. jpg
Par exemple, la photo principale de 1899430 numéro de liste se trouve à
https://remoteserver/folder/folder/1/430/1899430.jpg
Notre structure supplémentaire chemin de l'image répertoire est comme suit:
https://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # / # cotation _photoPosition.jpg
Par exemple, La deuxième photo pour le numéro de liste 1899430 est situé à
https://remoteserver/folder/folder/2/430/1899430_2.jpg
Excellent script! J'avais besoin d'un petit saut démarrage pour un projet que je travaillais sur ce fait l'affaire.
J'ai fait quelque chose préavis impairs cependant, j'ai modifié le script pour travailler avec un formulaire et j'ai remarqué que pour la recherche, le dernier champ devenait enculer à cause de la nouvelle ligne char (soit \ r ou \ n ou les deux) était encore en cours d'enregistrement dans la base de données MySQL.
À cette fin, si vous remplacez:
$ Ligne = str_replace ("\ r la ligne ","",$);
avec:
$ Ligne = str_replace ('\ r la ligne',",$);
il gardera le retour d'être un problème, comme pour la nouvelle ligne, j'ai ajouté un petit quelque chose qui permet d'insérer de nouveaux enregistrements, mais les enregistrements de mises à jour existantes, de sorte que vous ne finissent pas avec les entrées en double. Au début du code ci-dessous, vous verrez où j'ai fait le même correctif pour les caractères nouvelle ligne réelle.
$ Linemysql = implode ("','",$ LineArray);
$ Newlinemysql = str_replace ('\ n',",$ linemysql);
if ($ addauto) {
switch ($ databasetable) {
cas ('adresse'):
$ Duplicatevals = "= adresse VALUES (adresse),
ville valeurs = (ville), state = VALUES (Etat),
zip = VALUES (zip) ";
break;
de cas («propriétaire»):
$ Duplicatevals = "ownername = VALUES (ownername),
Maison type VALEURS = (Maison type),
addresskey valeurs = (addresskey) ";
break;
}
$ Query = "INSERT INTO $ valeurs databasetable (",'$ newlinemysql ')
ON UPDATE DUPLICATE KEY
Duplicatevals $ »;
} Else {
$ Query = "INSERT INTO $ valeurs databasetable ('$ linemysql')
ON UPDATE DUPLICATE KEY
Duplicatevals $ »;
}
Aussi, dans mon formulaire, j'ai ajouté le nom du tableau et si je voulais la table pour être [boolean] "addauto» ou non comme une entrée unique à partir d'un menu déroulant (séparés par une virgule), puis diviser le résultat au sommet de l'simplecsvimport script.
Enfin, vous avez à retenir pour définir des index dans la base de données pour l', "ON DUPLICATE ..." au travail, par incréments automatique ne fonctionne pas dans ce cas, vous devez donc définir un index secondaire sur les tables d'incrémentation automatique, les tables que Don 'incrémentation automatique t et ont des champs uniques travailler avec le seul indice si c'est l'itinéraire que vous voulez aller.
J'espère que cela aide quelqu'un!
Cheers!
Bonjour,
Apporté quelques modifications. . Mon txt a 3 colonnes séparées par un «|» (pipe). Le script affiche les données du fichier, compte les lignes, mais ne pas entrer les données dans la base de données. Des commentaires?
$ Csvcontent = fread ($ file, $ taille);
fclose ($ fichier);
$ Con = @ mysql_connect ($ dbhost, $ DBUserName, $ dbuserpassword) or die (mysql_error ());
@ Mysql_select_db ($ datasource) or die (mysql_error ());
$ Lineseparator = "\ n";
$ Fieldseparator = "|";
$ Lignes = 0;
$ Requêtes = "";
$ LineArray = array ();
$ Count = 0;
foreach (split ($ lineseparator, $ csvcontent) en tant que $ ligne) {
$ Count = $ count + 1;
$ Lignes + +;
$ Ligne = trim ($ ligne, "\ t");
$ Ligne = str_replace ("\ r la ligne ","",$);
/************************************
Cette ligne échappe le caractère spécial. l'enlever si les entrées sont déjà échappés dans le fichier csv
************************************/
$ Ligne = str_replace ("'"," \ '", $ ligne);
/*************************************/
$ LineArray = explode ($ fieldseparator, $ ligne);
$ Linemysql = implode (""",$ LineArray);
if ($ addauto)
$ Query = "INSERT INTO valeurs des indicateurs ('$ count', '$ linemysql');";
d'autre
$ Query = "INSERT INTO valeurs des indicateurs ('$ linemysql');";
$ Requêtes .= $ requête. "\ N";
@ Mysql_query ($ query) or die (mysql_error ());
echo "$ linemysql \ n";
}
Je ne comprends pas comment cela fonctionne à partir d'un fichier de contrôle. premier moyen de parcourir et sélectionner un fichier et ensuite soumettre où j'ai besoin d'modifiées
C'est du code très utile pour moi ..
merci.
Comment puis-je obtenir le fichier de navigation au lieu de taper le nom de chemin complet ..
S'il vous plaît aider en cela.
Merci
Merci, ce code a vraiment aidé!
Comment aurais-je le modifier afin de permettre une forme d'être affichée dans lequel l'utilisateur navigue et sélectionne le fichier csv à importer dans la table?
Et aussi comment pouvais-je faire en sorte que chaque fois qu'un nouveau fichier est soumis, il l'emporterait sur tout ce qui est actuellement stocké dans la table?
Un grand merci
[...] Qu'il ya eu quelques très bonnes propriétés que je pourrais utiliser pour m'aider à enseigner aux gens PL / SQL et XML. ITips et astuces PHP script pour importer des données CSV dans un script mysqlPHP d'importer des données csv dans mysql ... [...]
Salut à tous,
Comment puis-je contiennent ces citations csv dans la date "jour, mois date, 2010» et l'État »prov, de l'état" d'une colonne dans ma base de données? Je vois de nombreux exemples, mais je ne peux pas le faire fonctionner. toute aide serait bonne.
ak, 10037591,1, "Mardi 9 Mars, 2010 15:55:16", 59.7151, -151.4434,2.7,75.90,32 ", Kenai Peninsula, Alaska»
thx
@ Kish
le code actuel ne permet pas de navigation pour / chargement du fichier.
Vous pouvez simplement mettre le fichier CSV dans le même répertoire que le script PHP, et simplement la variable $ csvfile être égal au nom du fichier (sans le chemin)
@ Gary
vous pourriez utiliser un mysql_query @ ("tronquer $ databasetable"); juste après la déclaration @ mysql_select_db.
Mais faites attention car cette action va effacer les données et n'est pas réversible.
Comment ignorer la première ligne / ligne qui est un en-tête dans le fichier csv et insérez le reste des données dans la db?
Comme Gary, je veux être en mesure d'écraser un enregistrement existant, mais en le mettant à jour, non pas de supprimer toutes les données dans la db. Sp. quelque part par là:
if ($ addauto)
$ Query = "INSERT INTO $ valeurs databasetable (",'$ linemysql');";
d'autre
$ Query = "INSERT INTO $ valeurs databasetable ('$ linemysql');";
Comment puis-je vérifier pour voir si le dossier existe et ensuite mise à jour plutôt que d'insérer?
Le script est lu une ligne supplémentaire à partir du fichier csv. Par exemple, si les fichiers csv a 25 enregistrements Elle montre qu'il ya 26 dossiers. Pouvez-vous s'il vous plaît me dire où je me trompe?
J'ai ajouté pour vérifier si c'est une première ligne et de continuer boucle si sa première ligne.
Merci
Ce qui suit fait le truc pour moi:
LOAD DATA LOCAL INFILE LOW_PRIORITY
'C: \ \ Documents and Settings \ \ Administrateur \ \ Desktop \ \ SigmaS1.csv'
INTO TABLE `mabase`. `Matable`
FIELDS ESCAPED BY '\ \'
TERMINATED BY ','
FACULTATIVEMENT ENCLOSED BY '"'
LINES TERMINATED BY '\ r \ n "
(`User`, `pwd`, `sno`, `amt`, `ActiveRec`);
Cela a été très utile pour moi ... mais j'avais besoin de faire une modification pour la lecture de gros fichiers. J'étais confus au premier abord, mais ensuite réalisé le script charge l'intégralité du fichier en mémoire (non?). Voici donc une version personnalisée du code, qui lit des lignes dans une à la fois. il lit dans les fichiers qui ressemblent à
commencent fichier:
2,3, -1
1, -2,4
le fichier final (avec des valeurs beaucoup plus). Je voulais que chaque ligne soit une entrée de table et une pièce d'identité avec le numéro de ligne, ainsi que le premier ID représentant la taille de la table (ce qui ne changera pas plus tard).
<? Php
/********************************/
/ * Code à https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Modifier les entrées ci-dessous afin de refléter les valeurs appropriées
/********************************/
$ Databasehost = "localhost";
$ Databasename = "tomoku";
DatabaseUserName $ = "root";
$ Databasepassword = "root";
$ Fieldseparator = "\ n";
$ Lineseparator = "\ n";
/ / Ce code lit les fichiers tatami dans la base
$ Con = @ mysql_connect ($ databasehost, $ DatabaseUserName, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
/ / Cette boucle sur un tas de fichiers
pour ($ r = 2; $ r <14; $ r + +) {
for ($ c = $ r, $ c
Si je suis limité à l'accès disque dur client comment vais-je télécharger le fichier csv à l'exemple serveur.Pour pouvons-nous mettre la valeur par défaut de déposer contrôle de téléchargement
Un script merveilleux, mais je vais avoir des problèmes récurrents.
Après avoir exécuté le script, il est dit "a trouvé un total de 1 enregistrements dans ce fichier csv.".
J'ai regardé en arrière dans ma table et il montre une vierge.
J'ai vérifié pour s'assurer qu'il n'y avait le bon nombre de colonnes et il y avait.
S'il vous plaît aider!
Merci,
Coulton
Si vous voulez éviter l'insertion de la première rangée, juste jouer avec le compteur, par exemple:
Lignes $ = 1; (La valeur du compteur est de 1)
$ Requêtes = "";
$ LineArray = array ();
foreach (split ($ lineseparator, $ csvcontent) en tant que $ ligne) {
$ Lignes + +; (Affecte la première ligne # 2 (tête)
if ($ lignes> = 3) {(Démarrer à # 3 "rien de supérieur ou égal à 3")
J'ai eu ce script bon fonctionnement d'un domaine différent. Puis quand je l'ai déplacé, la tâche cron télécharge le fichier csv, il stocke, puis il enlève, mais ne marche pas le transférer à mysql. Quand je regarde le fichier import.php et essayer de l'exécuter je reçois le disant erreur ne peut pas trouver le fichier assurez vous d'avoir le bon chemin. Aide.
Pour sauter la première ligne / ligne qui est un en-tête dans le fichier csv ce faire:
... ..
if ($ lignes> 1) {
if ($ addauto)
$ Query = "INSERT INTO $ valeurs databasetable (",'$ linemysql');";
d'autre
$ Query = "INSERT INTO $ valeurs databasetable ('$ linemysql');";
$ Requêtes .= $ requête. "\ N";
@ Mysql_query ($ query);
}
Hmm .. J'ai obtenu ce genre d'erreur de fichier "n'est pas accessible en écriture, vérifiez les permissions. Trouvé un total de 2 enregistrements dans ce fichier csv. "Aucune idée de ce qui a mal tourné?
Hmm .. J'ai obtenu ce genre d'erreur de fichier "n'est pas accessible en écriture, vérifiez les permissions. Trouvé un total de 2 enregistrements dans ce fichier csv. "Aucune idée de ce qui a mal tourné?
Salut,
Obtenir cette erreur. comment résoudre ce problème?
Erreur:
Le fichier n'est pas accessible en écriture, vérifiez les permissions. Trouvé un total de 13 dossiers de ce fichier csv.
Merci
Haan
J'utilise ce code ... ... ... Son trop facile de mettre en œuvre dans mon site ... ..
Merci beaucoup ..
Je veux un peu plus de code pour php ... ...
Pour convertir la page en pdf ...
Beau travail!
Je viens vous poser une question.
Est-il possible d'utiliser plus de caractères pour le commando exploser dans le script?
J'ai besoin que allso il ya une séparation avec un. et;
Merci beaucoup si un corps a une idée!
Salut,
J'ai utiliser ce script pour importer un flux de données csv à mysql.
Le seul problème que j'ai, c'est que les guillemets "" sont également insérés dans mes tableaux
Délimiteur: (komma)
Boîtier: "(aanhalingsteken)
Nouvelle ligne: \ r \ n
Voici le code de BTW,
$ Databasehost = "localhost";
$ Databasename = "base";
$ Databasetable = "table";
DatabaseUserName $ = "admin";
$ Databasepassword = "admin";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
Csvfile $ = "https://linktosite/";
$ Addauto = 0;
$ Save = 0;
Outputfile $ = "output.sql"; / / si la sauvegarde est sur (1)
$ Fichier = fopen ($ csvfile, "rb");
$ Csvcontent = stream_get_contents ($ fichier);
fclose ($ fichier);
$ Con = @ mysql_connect ($ databasehost, $ DatabaseUserName, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Lignes = 0;
$ Requêtes = "";
$ LineArray = array ();
foreach (split ($ lineseparator, $ csvcontent) en tant que $ ligne) {
$ Lignes + +;
$ Ligne = trim ($ ligne, "\ t");
$ Ligne = str_replace ("\ r la ligne ","",$);
/************************************
Cette ligne échappe le caractère spécial. l'enlever si les entrées sont déjà échappés dans le fichier csv
************************************/
$ Ligne = str_replace ("'"," \ '", $ ligne);
/*************************************/
$ LineArray = explode ($ fieldseparator, $ ligne);
$ Linemysql = implode ("','",$ LineArray);
if ($ addauto)
$ Query = "INSERT INTO $ valeurs databasetable (",'$ linemysql');";
d'autre
$ Query = "INSERT INTO $ valeurs databasetable ('$ linemysql');";
$ Requêtes .= $ requête. "\ N";
@ Mysql_query ($ query);
}
@ Mysql_close ($ con);
if ($ save) {
if (! is_writable (outputfile $)) {
echo "Le fichier n'est pas accessible en écriture, vérifier les autorisations \ n".;
}
else {
$ Fichier2 = fopen ($ outputfile, "w");
if (! $ fichier2) {
echo "Erreur d'écriture dans le fichier de sortie \ n".;
}
else {
fwrite ($ fichier2, $ requêtes);
fclose ($ fichier2);
}
}
}
echo "a trouvé un total d'enregistrements de lignes $ dans ce fichier csv. ajoutée à DB \ n ".;
Cela fonctionne très bien. Merci!
Je suis face à un avis ci-dessous-
Avis: Undefined compensée: 1 dans C: \ wamp \ www \ Nouveau dossier (2) \ exl8.php sur la ligne 20
Avis: Undefined compensée: 2 dans C: \ wamp \ www \ Nouveau dossier (2) \ exl8.php sur la ligne 20
Avis: Undefined compensée: 2 dans C: \ wamp \ www \ Nouveau dossier (2) \ exl8.php sur la ligne 20
8pills.com est votre guichet unique solution de soins de santé. 8pills.com fournir le meilleur des médicaments génériques et de marque de classe.
Obsolète: split () est déconseillée dans E: \ wamp \ www \ floodpk2 \ admin \ simplecsvimport.php à la ligne 63
Le fichier n'est pas accessible en écriture, vérifiez les permissions. Trouvé un total de 1498 enregistrements dans ce fichier csv.
plz m'aider urgence
@ Zeshan
l'utilisation d'exploser au lieu de la scission
kaundo le doy descarga m'a aparecen muchos zips todos los Archivos los Ubico en una sola Carpeta? ¿
Je pense que c'est mieux pour csv panier est en langage SQL.
<? Php
Newbal $ = '0 ';
include "conn.php";
if (isset ($ _POST ['submit']))
{
$ Filename = $ _POST ['nom'];
$ Handle = fopen ("$ filename", "r");
while (($ data = fgetcsv ($ handle, 1000, ","))! == FALSE)
{
Sql5 $ = mysql_query ("SELECT * FROM poste où le point = '$ data [0 ]'");
$ Num = mysql_num_rows ($ sql5);
if ($ num == 0)
{
$ Import = "INSERT INTO article (item, gweight, DWEIGHT) values ('$ data [0 ]','$ données [1 ]','$ de données [2 ]')";
mysql_query ($ import) or die (mysql_error ());
}
else {
echo "$ data [0] sortie»;
}
}
fclose ($ handle);
print "Importer fait»;
}
d'autre
{
?>
Tapez le nom du fichier à importer:
Date de
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 ();
?>
il fonctionne bien sur quand je télécharge le fichier csv sur localhost, mais montrent d'erreur fichier manquant lorsqu'il est exécuté sur server.please m'aider, merci d'avance
Salut les amis,
J'ai besoin d'aide urgente de votre part ... si gentiment de m'aider voici le code ...
Préparé le fichier HTML. Mais j'ai besoin de solution PHP ... Veuillez aide pour moi ... ... ..
Envoyer un SMS
Nombre récepteur mobile:
91
Répertoire
Envoyer un fichier Excel:
<!-->
<Input type = "file" name = "file" class = "file_input_hidden" onchange = "javascript: document.getElementBy
Sender ID:
:
YOGA
Grafs
MOBITEL
var = new frmvalidator Validator ('freesms2');
frmvalidator.addValidation ("frno", "dem", "Entrez le numéro de mobile");
frmvalidator.addValidation ("frno", "num", "champ du numéro de mobile devrait contenir des nombres");
frmvalidator.addValidation ("frno", "longueur_min = 10000", "Numéro de mobile devrait être 10000 digits");
frmvalidator.addValidation ("message3», «dem», «Entrer le texte SMS");
Avec mes meilleures salutations,
Ravi Kumar
Ayant exacte même question, quelqu'un peut-il aider s'il vous plaît?
@ Tutoriels Exclusif
Est-il un moyen pour qu'il n'ont pas le temps? il fonctionne très bien avec les dossiers 100k, mais quand je vais quelque chose de grand comme un mil ou plus, dure environ 20 secondes puis passe d'un écran vide et des annonces pas de dossiers.? Merci.
@ Mike
Pouvez-vous essayer d'ajouter:
set_time_limit (0);
dès le début? (Juste après la balise d'ouverture php)
C'est très bien ... très facile à mettre en œuvre. Maintenant dois trouver comment utiliser un script tel ou similaires à télécharger. Xls avec. Csv
Un programme de grande petite.
Est-il un moyen de remplacer des données dans une cellule par exemple. «Ville» dans le CSV et le changer pour une valeur d'une page précédente comme un $ _SESSION ou la valeur $ _POST?
Mon fichier d'importation CSV a également guillemets doubles autour de chaque champ (principalement pour éviter des problèmes si j'ai besoin d'importer dans Excel afin de ne pas mangle les données), donc j'ai eu ce problème où il a été d'insérer des enregistrements avec des guillemets autour des données. J'ai dépouillé tous les guillemets en ajoutant cette ligne:
$ Ligne = str_replace ("\ line "","",$);
après cette ligne:
$ Ligne = str_replace ("\ r la ligne ","",$);
et la nouvelle ligne remplace les guillemets avec rien. C'est la même chose que la ligne avant sauf que c'est enlever \ "au lieu de \ r (guillemets doubles au lieu d'un retour chariot).
@ Neady
Quand je lance ce script en utilisant un fichier CSV que je connais bien les importations en utilisant PHP Admin, le script s'exécute, rapporte le nombre correct de lignes avec le message "Found un total de 193 dossiers de ce fichier csv." Mais aucun de ces données apparaît dans la table. J'ai apporté des modifications au format CSV afin que je puisse voir si les données sont mises dans la table et qu'il n'est pas. Des idées?
AJ
Ok, trouvé le problème. J'ai eu mispelt le nom du tableau. Mais ne se trouve que la question quand j'ai eu ajouté le code suivant qui va retourner une erreur si l'instruction SQL échoue. Actuellement, le script ne disent pas s'il ya eu un problème.
Donc changer la ligne
@ Mysql_query ($ query);
à toutes les conditions suivantes: -
$ Result = mysql_query ($ query);
/ / Vérification du résultat
/ / Ceci montre la requête envoyée à MySQL, et l'erreur. Utile pour le débogage.
if (! $ result) {
$ Message 'Invalid requête:' =. mysql_error (). "\ N";
«Requête entière:« message .= $. $ Query;
die ($ message)
Hope qui aide quelqu'un. Il m'a fait.
AJ
@ Poisson Andrew
le code est de retour une déclaration qu'il ne pouvait pas trouver le fichier CSV ...
wat pourrait être le problème ....
dernier développement, le code peut détecter les pas de lignes dans le fichier CSV, mais ce n'est pas l'afficher dans le tableau
même problème avec moi @ poisson Andrew
pouvez-vous expliquer votre code que vous voulez remplacer @ mysql_query ($ query); avec les états u donné, mais il montre une erreur $ message est indéfini @ poisson Andrew
Râper code C'est vraiment utile pour tous les développeurs PHP.
@ Pruthvi
Salut,
S'il vous plaît utilisez le code ci-dessous donnée ... ...
ya le code fonctionne, mais nw reçois mes données enfermées dans des guillemets @ Suman
Merci de partager Excel à mysql script, ce qui est très utile pour moi.
Je ne suis pas un programmeur. Je vois votre script et il pourrait être proche de ce dont j'ai besoin, ou peut-être pourrait former la base de ce dont j'ai besoin, je ne suis pas sûr.
J'ai besoin d'effectuer les mêmes fonction de téléchargement, encore et encore, mais à partir d'un sous-répertoire différent à chaque fois de mon disque dur, pour une liste des fichiers CSV, et à une base de données MySQL différente à chaque fois (sur un site web differret chaque fois). Dans la plupart des cas, les db ne disposons pas de données en elle, mais il serait idéal (mais pas indispensable) si le script pourrait encore travailler avec une db qui ne disposent de données, sans affecter les données existantes).
J'en ai besoin pour vous connecter à la DB sur le serveur (il devrait me demander de l'URL du site et les noms d'utilisateur et mot de passe db, etc.)
J'ai besoin de quelque chose qui me permet de parcourir et de sélectionner un nom de répertoire sur mon disque dur, ou y entrer.
Ensuite, il traite chaque fichier csv dans ce répertoire, l'un après l'autre, comme suit:
Sur chaque dossier j'ai besoin c'est d'abord prendre le nom du fichier (moins l'extension) et de le transférer à la db dans la catégorie table. Cette table contient une clé numéroté qu'elle a ensuite assigné à ce nom.
J'ai alors besoin du script de télécharger uniquement la colonne de texte (1er colum de données) de ce fichier à des mots de table, et ajouter le nubmer correspondant pour le nom de la catégorie du premier fichier.
Il convient de noter que le fichier CSV contient souvent trois lignes de texte en-tête et une ligne vide, tous les quatre que je veux ignorer et non téléchargés. Il ya souvent des lignes vides te eend du fichier que je veux aussi qu'il ignore, ceux-ci, ainsi que ignorent toutes les autres colonnes qui peuvent être ou ne pas être dans le fichier csv. Dans certains cas, le fichier CSV ne peut avoir aucun en-tête ou d'autres colonnes.
Puis l'image suivante, jusqu'à ce qu'il s'épuise de fichiers dans le répertoire.
Ensuite, je voudrais qu'il me dise «Processus complet.", Et si des erreurs de me dire.
Qui de vous les gars m'aider avec cela?
@ Warren
Aussi, juste par curiosité pourrait-il aussi traiter un fichier txt, (qui vient d'une liste de mots à l'intérieur) de la même façon?
(Je suis nouveau à cela, et je sais que peut-être demander beaucoup, donc si quelqu'un pouvait prendre ce petit projet sur le pour moi, si cela est approprié, nous pourrions discuter de ma payer une petite somme pour leur temps à faire les changements à répondre à mes besoins? S'il vous plaît faites le moi savoir.)
Mon adresse e-mail est: wr.spence @ hotmail.com
Juste une petite correction à ma demande, les deux tables de la base MqSQL j'ai mentionnés sont en fait appelé:
keywords_categories
mots-clés
@ Warren
/********************************/
Ce fichier comprend de nombreux changements tentative faite par Warren (pas un programmeur) le 28 décembre à partir de 2010 en fonction des commentaires sur le site source et d'autres infos de manière à rendre ce programme dans l'une il a besoin. Ceci est très incomplet. L'aide est très apprécié et très nécessaire.
Les lignes ajoutées pour créer des boîtes de saisie pour le nom de base de données URL du site Web et mot de passe etc
/********************************/
Bienvenue au serveur Upload utilitaire
Ce programme fonctionne à partir de votre PC pour remplir deux tables vides dans une base de données de MySQL sur votre site web par: téléchargement de chaque nom de fichier moins l'extension, avec un numéro unique à l'avant comme un compteur, pour keywords_categories table, puis assigne alors le numéro 1 dans la colonne vide en face de la colonne de premières données de ce fichier, et augmente le nombre de un pour chaque fichier suivant transformés à base de ce répertoire, de sorte que le nombre assigend au nom de la catégorie dans le tableau correspond à des mots clés appartenant à ce texte, qui puis téléchargés vers tableau de mots clés.
Ceci est fait pour tous les fichiers csv dans un répertoire spécifié dans votre l'.
Il ignore les cinq premières lignes de votre fichier CSV.
Site Web:
Database Name:
Nom d'utilisateur base de données:
Database Password:
Chemin du répertoire contenant les fichiers à télécharger:
/********************************/
Question
Comment puis-je obtenir au-dessus des données de boîtes d'entrée dans le programme pour correspondre à celle demandée ci-dessous?
/********************************/
<? Php
/********************************/
Ligne ajoutée pour empêcher timeout sur les gros fichiers.
/********************************/
set_time_limit (0);
/********************************/
Obtenir des noms de fichier des fichiers à traiter, supprimer l'extension de nom de fichier puis de les utiliser pour télécharger que les noms des catégories d'keywords_categories table.
/********************************/
/********************************/
Supprime les extensions nom de fichier
copiés à partir PerlMonks www org /? = 151232 node_id
/********************************/
sous parse_out_extension {
die ("Pas de nom de fichier à analyser \ n".) if (@ _!);
my ($ fichier) = @ _;
@ mes pièces;
carte {push (@ pièces, $ _)} split (/ \ /, $ fichier.);
my $ fin = pop (@ pièces);
$ File = ~ s / \ $ fin / /.;
return ($ fichier) si $ fichier;
/********************************/
/ * Code originale au https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Modifier les entrées ci-dessous afin de refléter les valeurs appropriées
/********************************/
$ Databasehost = "localhost";
$ Databasename = "test";
$ Databasetable = "échantillon";
DatabaseUserName $ = "test";
$ Databasepassword = "";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
Csvfile $ = "filename.csv";
/********************************/
/ * Voulez-vous ajouter un champ ampty au début de ces dossiers?
/ * Note Warren, dans le cas des mots-clés qui sont la première colonne de données dans chaque fichier, sur un fichier par fichier ce nouveau vierge coum lieu DIN Frot des mots-clés doit être changé de sorte qu'il enregistre le numéro attribué à la nom de la catégorie qui est constituée du nom du fichier moins l'extension et la place dans cette nouvelle colonne première ébauche.
/ * Cette fonction est utile si vous avez une table avec le premier champ étant un entier auto_increment. Notez par Warren. C'est ce qui est nécessaire dans le cas des noms de fichiers qui sont moins exteniosn upoaded d'keywords_categories table.
/ * Et le fichier CSV n'est pas comme le champ vide, avant les enregistrements.
/ * Définir 1 pour oui et 0 pour non. ATTENTION: ne pas mis à 1 si vous n'êtes pas sûr.
/ * Cela peut dépotoir de données dans les domaines de mal si ce champ supplémentaire n'existe pas dans la table. Notez par Warren n'avez probablement pas besoin de ce fichier, je mon cas, mais seulement une supposition de ma part mais ne faut voir s'il ya besoin.
/********************************/
$ Addauto = 1;
/********************************/
/ * Voulez-vous enregistrer les requêtes MySQL dans un fichier? Si oui définir $ enregistrez-1.
/ * Permission sur le fichier devrait être fixé à 777. Soit télécharger un fichier via FTP et pour l'échantillon
/ * Changer les permissions, ou d'exécuter à l'invite: toucher output.sql & & chmod 777 output.sql
/********************************/
$ Save = 0;
Outputfile $ = "output.sql";
/********************************/
if (! file_exists ($ csvfile)) {
echo "Fichier non trouvé. Assurez-vous que vous avez spécifié le bon chemin \ n ".;
sortie;
}
$ Fichier = fopen ($ csvfile, "r");
if (! $ fichier) {
echo "Erreur d'ouverture fichier de données \ n".;
sortie;
}
$ Taille = filesize (csvfile $);
if (! $ size) {
echo "Le fichier est vide \ n".;
sortie;
}
$ Csvcontent = fread ($ file, $ taille);
fclose ($ fichier);
$ Con = @ mysql_connect ($ databasehost, $ DatabaseUserName, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
/********************************/
Pour éviter d'insérer les quatre premières lignes de texte en-tête dans adveristing et une ligne vide. La ligne de code égal à zéro a été remplacé par le code ci-dessous.
/********************************/
Lignes $ = 1; (La valeur du compteur est de 1)
$ Requêtes = "";
$ LineArray = array ();
foreach (split ($ lineseparator, $ csvcontent) en tant que $ ligne) {
$ Lignes + +; (Affecte la première ligne # 2 (tête)
if ($ lignes> = 5) {(Démarrer à # 5 «tout supérieur ou égal à 5?)
$ Requêtes = "";
$ LineArray = array ();
foreach (split ($ lineseparator, $ csvcontent) en tant que $ ligne) {
$ Lignes + +;
$ Ligne = trim ($ ligne, "\ t");
$ Ligne = str_replace ("\ r la ligne ","",$);
/************************************
Cette ligne échappe le caractère spécial. l'enlever si les entrées sont déjà échappés dans le fichier csv
************************************/
$ Ligne = str_replace ("'"," \ '", $ ligne);
/*************************************/
$ LineArray = explode ($ fieldseparator, $ ligne);
$ Linemysql = implode ("','",$ LineArray);
if ($ addauto)
$ Query = "INSERT INTO $ valeurs databasetable (",'$ linemysql');";
d'autre
$ Query = "INSERT INTO $ valeurs databasetable ('$ linemysql');";
$ Requêtes .= $ requête. "\ N";
/************************************
Ce morceau de code ci-dessous a été ajouté à maintenant afficher les messages d'erreur.
************************************/
$ Result = mysql_query ($ query);
/ / Vérification du résultat
/ / Ceci montre la requête envoyée à MySQL, et l'erreur. Utile pour le débogage.
if (! $ result) {
$ Message 'Invalid requête:' =. mysql_error (). "\ N";
«Requête entière:« message .= $. $ Query;
die ($ message)
}
@ Mysql_close ($ con);
if ($ save) {
if (! is_writable (outputfile $)) {
echo "Le fichier n'est pas accessible en écriture, vérifier les autorisations \ n".;
}
else {
$ Fichier2 = fopen ($ outputfile, "w");
if (! $ fichier2) {
echo "Erreur d'écriture dans le fichier de sortie \ n".;
}
else {
fwrite ($ fichier2, $ requêtes);
fclose ($ fichier2);
}
}
}
echo "a trouvé un total d'enregistrements de lignes $ dans ce fichier csv \ n".;
?>
Salut les gars, je voulais juste vous le savez tous ce que j'ai trouvé quelqu'un de m'écrire le programme réel dont j'ai besoin.
J'ai essayé le script mais le output.sql est écriture trucs bizarres,
insérer dans les valeurs test_excel («PK |!??????????? Q k5 q q q K5 K5 q ...???.
comme ces choses
Comment puis-je résoudre ce problème. n'importe quel format spécial pour la feuille Excel?
@ Khaled Une
Comment puis-je exporter UTF8 Excel pour output.sql
Merci
@ Roy
J'ai modifié votre script, de sorte qu'il consomme de la mémoire lors du traitement beaucoup moins de gros fichiers (il a frappé la limite mémoire de php quand j'ai essayé de l'utiliser sur un fichier CSV 100mb). Les changements vont comme suit:
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$ Taille = filesize (csvfile $);
if (! $ size) {
echo "Le fichier est vide \ n".;
sortie;
}
$ Con = @ mysql_connect ($ databasehost, $ DatabaseUserName, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Lignes = 0;
$ Requêtes = "";
while (! feof ($ fichier)) {
Csvline $ = fgets ($ fichier, $ chunksize);
$ Lignes + +;
if ($ lignes <2) de continuer;
$ Ligne = trim ($ csvline, "\ t");
$ Ligne = str_replace ("\ r la ligne ","",$);
Cette ligne échappe le caractère spécial. l'enlever si les entrées sont déjà échappés dans le fichier csv
$ Ligne = str_replace ("'"," \ '", $ ligne);
$ LineArray = explode ($ fieldseparator, $ ligne);
$ Linemysql = implode ("','",$ LineArray);
$ Query = "INSERT INTO $ valeurs databasetable ('$ linemysql');";
if ($ save) $ requêtes .= $ requête. "\ N";
@ Mysql_query ($ query);
echo $ lignes "\ n".;
}
fclose ($ fichier);
$ Lignes -= 3;
@ Mysql_close ($ con);
Je vous remercie,
@ Joofoo
J'ai chargé votre code, mais je ne reçois aucune information à jour sur base de données MySQL ...
CSV contient:
En-tête -> identifiant, mot de passe, message, e-mail, image, la date
Row2 -> Projet de loi, mec,,,,
Row3 -> Jane, gal,,,,
Row4 -> David, un enfant,,,,
Et voici le code ...:
<? Php
/ / Mise en place du fichier iphonelogin.php de "distant" le dossier ...
/ * Connexion à la BD * /
/ / $ Link = mysql_connect ('ronbo.db.6405862.hostedresource.com', 'ronbo', 'Pepper0689') or die ("Impossible de se connecter à la DB ');
/ / Mysql_select_db ('ronbo', $ link) or die ("Impossible de sélectionner le DB ');
/ / https://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/ * Code à https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Modifier les entrées ci-dessous afin de refléter les valeurs appropriées
/********************************/
$ Databasehost = "dbhost";
$ Databasename = "nom";
$ Databasetable = "table";
$ DatabaseUserName = "username";
$ Databasepassword = "password";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
Csvfile $ = "spreadsheet.csv";
/********************************/
$ Addauto = 1;
/********************************/
$ Save = 0;
Outputfile $ = "output.sql";
/********************************/
if (! file_exists ($ csvfile)) {
echo "Serveur obtenu votre demande, mais le fichier CSV que vous souhaitez charger dans la base de données n'est pas présent ... .. \ n";
sortie;
}
$ Chunksize = 1 * (1024 * 1024);
$ Fichier = fopen ($ csvfile, "rb");
if (! $ fichier) {
echo "Erreur d'ouverture fichier de données \ n".;
sortie;
}
$ Taille = filesize (csvfile $);
if (! $ size) {
echo "Le fichier est vide \ n".;
sortie;
}
$ Con = @ mysql_connect ($ databasehost, $ DatabaseUserName, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Lignes = 0;
$ Requêtes = "";
while (! feof ($ fichier)) {
Csvline $ = fgets ($ fichier, $ chunksize);
$ Lignes + +;
if ($ lignes <2) de continuer;
$ Ligne = trim ($ csvline, "\ t");
$ Ligne = str_replace ("\ r la ligne ","",$);
Cette ligne échappe le caractère spécial. l'enlever si les entrées sont déjà échappés dans le fichier csv
$ Ligne = str_replace ("'"," \ '", $ ligne);
$ LineArray = explode ($ fieldseparator, $ ligne);
$ Linemysql = implode ("','",$ LineArray);
$ Query = "INSERT INTO $ valeurs databasetable ('$ linemysql');";
if ($ save) $ requêtes .= $ requête. "\ N";
@ Mysql_query ($ query);
echo $ lignes "\ n".;
}
fclose ($ fichier);
$ Lignes -= 3;
@ Mysql_close ($ con);
<>
Je ne pouvais vraiment besoin d'aide à obtenir que cela fonctionne ...
Ron
@ Mark Cloyd
«Valeurs = (adresse)
J'obtiens une erreur ici comme Parse error: syntax error, unexpected '='
Toute idée de la façon d'obtenir ce script fonctionne pour les champs qui sont enfermés avec des guillemets doubles afin que les champs par des virgules en eux ne reçoivent pas lire comme une nouvelle entrée?
J'ai des données qui inclut des virgules, comme les montants en dollars et une section de commentaires où les utilisateurs pourraient avoir utilisé une virgule. J'ai besoin de la totalité du champ importés et ce script les traite comme de nouveaux champs.
Merci, importateur csv très bon.
Mais j'ai trouvé un petit problème, il fonctionne uniquement avec un fichier CSV avec la structure: "champ1", "champ2", "champ3", etc, mais je Hava un fichier CSV comme ceci: champ1; champ2; filed3; etc
La seule chose que je peux changer est $ fieldseparator mais comment puis-je «dire» le script que le fichier ne pas utiliser "(délimiteur de champ)?
Mon ideia était un combobox avec $ fieldseparator (ou et une autre avec $ fielddelimiter ("ou rien)
Merci d'avance.
Je suis vraiment confus avec ce code!
mais je l'habitude d'essayer jusqu'à!
BTW, la façon dont le code html ou dans un domaine d'appeler ce code
Salut ...
Je suis face à un problème, quand je l'utiliser, sa montrant une erreur en disant
"Obsolète: split () est déconseillée dans C: \ wamp \ www \ test1 \ simplecsvimport.php sur la ligne 64
Le fichier n'est pas accessible en écriture, vérifiez les permissions. Trouvé un total de 41 dossiers de ce fichier csv. "
Répondre PLS, ce qui ne va!
merci d'avance!
Grand script! Tnx beaucoup
[...] Legend.ws, ils ont fait un bout de code disponible qui peut être facilement modifié et intégré dans une [...]
Salut, Ce script est grand. J'ai un problème cependant. Est-ce là de toute façon d'enlever les marques "que le script est entrer dans ma base de données. Ils sont autour de chaque entrée dans la cellule.
Rearlly travaillé avec php
Paglu Just Chill
Script pratique. Il se pourrait que vous avez besoin de la création de la table ainsi (grand format CSV avec de nombreuses colonnes). Donc une version modifiée slidly qui peut créer la table en utilisant les en-têtes de la première ligne dans le fichier CSV.
Merci beaucoup. Corée du Sud.
Je veux que mon fichier csv pour obtenir vérifié avec la base de données.
Dans la base de données il ya une rangée comme celle-
23 tests INDE
Mon fichier csv est comme ça-
ABC 21 INDE
def 32 EN
23 tests INDE
def 21 INDE
Lorsque je télécharge le fichier csv il doit vérifier que le nom de «testing» est déjà dans la base de données et doit quitter cette ligne et de télécharger les 3 autres lignes.
Est-il possible de faire.
S'il vous plaît aider.
Merci.
THANK U SOO BEAUCOUP DE FOURNIR CE CODE ... MERCI ... U.
Merci beaucoup, c'est très très utile!
Obsolète: split () est déconseillée dans C: \ wamp \ www \ simplecsvimport.php sur la ligne 66
S'il vous plaît aider à le résoudre.
Ceci est juste l'information que je cherchais! Je vais utiliser ce script pour importer des données csv dans mysql.
Code pour l'importation de fichiers CSV à l'aide de Php mysq: -
Tout d'abord faire toutes les feuilles Acess pour Excel et enregistrer en tant que feuille de fichier csv
Merci!
Il fonctionne comme un charme!
Très utile pour Allaw à un utilisateur de remplir un tableau sans donner un véritable accès à elle.
Merci encore
On comprend que la vie humen semble être pas bon marché, les gens aussi différents besoin de liquidités pour des choses diverses et pas tout le monde gagne grosse caisse sommes. Par conséquent, pour recevoir quelques prêts de crédit et de prêt à court terme devrait être bon moyen hors.
Certes, un morceau fantastique de travailler ... Il possède des renseignements pertinents. Merci de poster ce sujet. Votre blog est très intéressant et très partage informative.Thanks. Définitivement un grand morceau de travaux Merci pour votre travail.
Sites Web recommandés ...
[...] Ci-dessous vous trouverez le lien vers quelques sites que nous pensons que vous devriez visiter ... [...]
Merci beaucoup, très bon tutoriel
Le fichier n'est pas accessible en écriture, vérifiez les permissions. Trouvé un total de 1 enregistrements dans ce fichier csv.
S'il vous plaît m'aider à résoudre ce problème. Je n'ai pas créer ce fichier output.sql
Je vais certainement utiliser celui-ci. Je me demande simplement comment protéger ou mettre en œuvre afin que l'extérieur ne sera pas l'utiliser contre moi. Je suis débattre à utiliser ce script ou un script perl que je peux courir en ligne de commande. Merci.
Préservation et promotion de la santé est réalisée par une combinaison de physique, mentale et bien-être social, parfois appelé «le triangle de la santé.« La santé est un concept positif axé sur les ressources sociales et personnelles, ainsi que les capacités physiques.
Merci ... travail très simple n grand ..!!
Connexes .. Trackback ...
[...] Le temps de lire ou de consulter le contenu ou les sites que nous avons lié à [...] en dessous de la ...
Laisser une réponse