rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[PHP - SQL] Load data infile

dodou, le mardi 19 juin 2007 à 14:39:58
Bonjour à vous
J'ai un pb avec la fonction load data infile :(
voila, j'ai un fichier texte sur mon serveur (/file/texte.txt), avec des @ en tant que séparateurs, et je voudrais l'utiliser pour inserer le tout dans ma base de donnée (table : test);
La fonction que j'utilise (et qui ne marche pas donc) :
$query= "LOAD DATA INFILE '/file/texte.txt' INTO TABLE `test` FIELDS TERMINATED BY '@' ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' ";
J'ai également essayé en ajoutant LOCAL après DATA, mais ca ne marche pas non plus.

Aucune erreure ne m'est signalé mais ma table ne se remplie pas :(

Merci beaucoup de m'accorder de votre temps pour m'aider :D
Configuration: Windows Vista
Opera 9.21
Répondre à dodou  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ohm-WorK, le mardi 19 juin 2007 à 14:51:42
Salut

Donc, si j'ai suivi tu fais :
$query= "LOAD DATA INFILE '/file/texte.txt' INTO TABLE `test` FIELDS TERMINATED BY '@' ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' ";
et ensuite tu dois surement faire un :
$req = mysql_query($query) or die (mysql_error());

Et tu n'obtient aucune erreur ?

Tchusss La vie est une maladie mortelle, sexuellement transmissible (Woody Allen)
Répondre à Ohm-WorK

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dodou, le mardi 19 juin 2007 à 15:02:09
Salut Ohm-WorK, merci de m'aider.

J'avais oublié de mettre or die(mysql_error()), c'est pour ca que je voyais pas les erreurs.

Alors, quand je fais la requete LOAD DATA LOCAL INFILE j'ai cette erreur :
The used command is not allowed with this MySQL version

Et quand je fais LOAD DATA INFILE j'ai cette erreure :
Access denied for user: 'xxxxxx@localhost' (Using password: YES)

Moi ca ne m'avance pas plus vu que je sais pas ce que ca veut dire, mais peut etre que ca va t'aider a cibler le probleme.

Merci @ tte
Répondre à dodou

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ohm-WorK, le mercredi 20 juin 2007 à 14:41:08
Salut,

Alors

1) The used command is not allowed with this MySQL version : Commande non autorisé dans ta version de Mysql

2) Access denied for user: 'xxxxxx@localhost' (Using password: YES) : Problème d'authentification lors de l'accès à la base de données.

Ca devrait t'aiguiller :)

Tchuss

Ohm-WorK La vie est une maladie mortelle, sexuellement transmissible ­(Woody Allen)
Répondre à Ohm-WorK

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dodou, le mercredi 20 juin 2007 à 14:56:52
Lut Ohm-Work

Oki merci;

Mais maintenant la question est : " comment palier a ce probleme ?" lol;

Comment activer cette option (LOAD DATA LOCAL INFILE) dans mon MySQL ???;

Ce n'est pas un pb d'acces a la base (je me connect bien a la base avec acces ALL Privileges, et j'arrive a recuperer toutes les infos de mes tables);

Merci encore @ toi !
Répondre à dodou

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ohm-WorK, le mercredi 20 juin 2007 à 15:11:00
Re

tu utilise quelle version de mysql ?

Tchusss La vie est une maladie mortelle, sexuellement transmissible ­(Woody Allen)
Répondre à Ohm-WorK

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dodou, le mercredi 20 juin 2007 à 15:34:17
Je ne sais pas qu'elle est la version, mais apparemment ca a l'air d'etre une des dernieres qui integre la suppression de cette fonctionnalité (par securité).
Mais mon serveur est sur OVH, donc mutualisé. Je sais pas si je peux modifier les options et si oui comment...

J'ai entendu parler de --enable-local-infile, mais où il se trouve et comment y acceder !?!?
Etant sur un serveur mutualisé je sais meme pas si possible.

As tu une idée de comment je pourrai faire pour que ca marche ?

Encore merci pour tes reponses !
Répondre à dodou

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ohm-WorK, le mercredi 20 juin 2007 à 15:40:00
Salut

Si tu es sur du mutualisé, tu n'aura pas accès aux options de démarrage du serveur, désolé !

Tchuss La vie est une maladie mortelle, sexuellement transmissible ­(Woody Allen)
Répondre à Ohm-WorK

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dodou, le mercredi 20 juin 2007 à 15:58:48
RE
Je viens de demander a mon bosse, et en faite c'est un serveur dedié.
On a acces au configuration de mysql.
Mais j'ai cherché partout mais rien trouvé correspondant LOAD DATA LOCAL INFILE.

Est ce que tu sais comment redemarrer mysql en activant l'option (--enable-local-infile)
ou est ce que je dois aller et qu'est ce que je dois taper ... ?

Merci
Répondre à dodou

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ferrat, le mardi 11 septembre 2007 à 15:24:55
bonjour
j'ai exactement le meme probleme avec "LOAD DATA INFILE" et comme il y a plus de 2 mois que ces messages ont été postés, je pense qu'un aurait trouvé une solution, bref
si vous avez une idée je vous attends.
merci d'avance.
Répondre à ferrat

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dodou, le mardi 11 septembre 2007 à 16:13:33
$alut Ferrat

Je n'ai malheureusement pas trouvé comment faire pour activer cette option.
Du coup j'ai laché l'affaire et me suis rabattu sur une autre voix

Je fais une lecture du fichier en PHP et je crée une requete d'insertion en BD ( en bouclant tant qu'il y a des lignes dans le fichier )

//Le chemin d'acces a ton fichier sur le serveur
$fichier = fopen("textes/ton_texte.txt", "r"); 

//tant qu'on est pas a la fin du fichier :
while (!feof($fichier)) 
{ 
// On recupere toute la ligne
$uneLigne = fgets($fichier, 1024);
//On met dans un tableau les differentes valeurs trouvés (ici séparées par un '@') 
$tableauValeurs = explode('@', $uneLigne); 
// On  crée la requete pour inserer les donner (ici il y a 7 champs donc de [0] a [6])
$sql="INSERT INTO la_table VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."')"; 
$req=mysql_query($sql); 
// la ligne est finie donc on passe a la ligne suivante (boucle)
}


Voila c'est tout simple mais peut-être que ca t'aidera ou t'orientera

@ ++
Répondre à dodou

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tbaillon, le mardi 9 octobre 2007 à 13:26:02
Bonjour,

J'ai eu exactement le même problème que vous.

Ce genre de problème viens du fait que les autorisations que l'on donne aux utilisateurs lorsque l'on les créée avec des GRANT.

Le problème est résolu depuis hier soir pour moi.

Mon objectif était de créer un utilisateur ayant tous les droits sur son schéma de base, mais pas de droits particuliers sur le reste.

Voici donc ce que j'ai fait:

-- ------------------------------------------------------------­------------------------------------------------------------­---
-- Suppression de l'utilisateur s'il existe pour localhost
drop user 'USER_LOGIN'@'localhost';

-- Suppression de l'utilisateur s'il existe pour % (Tous les autres hosts)
drop user 'USER_LOGIN';

-- Donne les droits pour accéder à minima sur les schéma standard.
GRANT USAGE, SELECT ON *.* TO 'USER_LOGIN'@'localhost' IDENTIFIED BY 'USER_PASSWORD';

-- Donne tous les droits pour accéder au schéma de l'utilisateur, en localhost avec possibilité de faire des GRANT
-- comme par exemple pour créer des utilisateurs read-only (SELECT only par exemple)

GRANT ALL PRIVILEGES ON USER_SCHEMA.* TO 'USER_LOGIN'@'localhost' IDENTIFIED BY 'USER_PASSWORD' WITH GRANT OPTION;

-- Donne tous les droits pour accéder au schéma de l'utilisateur, depuis tout autre serveur SANS possibilité de faire des GRANT
GRANT ALL PRIVILEGES ON USER_SCHEMA.* TO 'USER_LOGIN'@'%' IDENTIFIED BY 'USER_PASSWORD';

-- Donne les droits pour utiliser les LOAD DATE INFILE.
GRANT FILE ON *.* TO 'USER_LOGIN'@'localhost';

-- Recharge les droits.
FLUSH PRIVILEGES;

-- ------------------------------------------------------------­------------------------------------------------------------­---

J'utilise ce modèle SQL pour créer les utilisateurs avec un script BASH/SH/CSH pour faire des remplacements des variables:
USER_SCHEMA, USER_LOGIN et USER_PASSWORD
par des valeurs données en argument.

Voilà.

J'espère que cela vous aidera.

Cordialement,
Thierry
Répondre à tbaillon

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Rusbel, le mercredi 9 janvier 2008 à 14:56:40
hola me gustaria un ejemplo mas completo .. de que manera tiene que estar estructurado el txt.. y como puedo hacer una rutina ...

mi problema es lo siguiente :

desde cliper .. me genera un archivo plano.. ose un txt por cada registro.. lo que se desea es leer ese txt y pasarlo a mi base de datos mysql ... agradecere su ayuda:

explico a medida que se van generando los txt mi php tiene que leer el txt y automaticamente insertarlo en mi tabal de mi bd mysql .. quiero algo asi como una rutina .. gente .. es urgente .. agradecere su ayuda
Répondre à Rusbel

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
bloap, le vendredi 1 février 2008 à 18:46:06
remplacer LOAD DATA LOCAL INFILE par LOAD DATA INFILE peut aider
Répondre à bloap

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 bloap, le vendredi 1 février 2008 à 18:47:21
remplacer LOAD DATA LOCAL INFILE per LOAD DATA INFILE
Répondre à bloap
Logiciels pertinents trouvés dans les téléchargements
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger Zilla Data Nuker 3.2.0.1Zilla Data Nuker - En supprimant des fichiers ou des dossiers sensibles ou infectés, il est possible que des fragments restent sur le disque...Catégorie: Nettoyage
Licence: Freeware/gratuit
Télécharger MySQL 5.0.67MySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Plus de logiciels gratuits sur « [PHP SQL] Load data infile »