LOAD DATA INFILE - Solution non trouvée sur le forum
Posté : 24 nov. 2011, 13:03
BOnjour à tous,
Tout d'abord, j'ai regardé pas mal de posts en rapport avec cette "fonction" sur le forum, et j'ai eu beau tester toutes les solutions présentées, avec différentes mises en page de syntaxes et de codes, rien n'y fait...
Je vous explique le but du truc, puis vous je vous link le code.
Alors, j'ai une base de données avec une liste de mails pour une newsletter. L'utilisateur voudrait pouvoir mettre à jour régulièrement cette table de mail avec un fichier CSV qui ne contient qu'une seule colonne (un mail par ligne).
Donc, ma démarche, c'est :
Créer une table mail_temp (mail varchar(60))
Insérer le contenu de mail.csv à ma table mail_temp (mail)
Supprimer de mail_temp les mails qui sont déjà contenus dans newsletter
Il ne me reste donc que des nouveaux mails dans mail_temp, je les insère donc dans newsletter
Supprimer la table mail_temp.
Mon souci, c'est que dès la première étape, ça merde.
La table mail_temp se créée, mais elle reste vide de chez vide...
Donc forcément, la suite se passe pas bien !
Voilà le code :
La requête n°4 met à jour une colonne de la table newsletter qui n'est donc pas remplie pour les entrée qui viennent de mail_temp, rien de bien méchant là dedans.
Pour tester, j'ai tout passé en commentaire, et n'ai gardé que la première requête, d’où le fait que je me rende compte qu'elle ne fonctionne pas, puisqu'en me connectant à phpmyadmin, je constate que la table mail_temp existe, mais qu'elle est vide !
Merci pour votre aide, et désolé de ressortir un énième fois ce problème, mais j'ai essayé plein de solutions que vous fournissez ici sans succès...
Olivier.
Tout d'abord, j'ai regardé pas mal de posts en rapport avec cette "fonction" sur le forum, et j'ai eu beau tester toutes les solutions présentées, avec différentes mises en page de syntaxes et de codes, rien n'y fait...
Je vous explique le but du truc, puis vous je vous link le code.
Alors, j'ai une base de données avec une liste de mails pour une newsletter. L'utilisateur voudrait pouvoir mettre à jour régulièrement cette table de mail avec un fichier CSV qui ne contient qu'une seule colonne (un mail par ligne).
Donc, ma démarche, c'est :
Créer une table mail_temp (mail varchar(60))
Insérer le contenu de mail.csv à ma table mail_temp (mail)
Supprimer de mail_temp les mails qui sont déjà contenus dans newsletter
Il ne me reste donc que des nouveaux mails dans mail_temp, je les insère donc dans newsletter
Supprimer la table mail_temp.
Mon souci, c'est que dès la première étape, ça merde.
La table mail_temp se créée, mais elle reste vide de chez vide...
Donc forcément, la suite se passe pas bien !
Voilà le code :
Code : Tout sélectionner
$req1= "CREATE TABLE mail_temp (mail varchar(60))
LOAD DATA INFILE 'csv/mails.csv'
INTO TABLE mail_temp
FIELDS
TERMINATED BY ';'
ESCAPED BY '\\\\'
LINES
STARTING BY ''
TERMINATED BY '\\n'
(mail)";
$exec1 = mysql_query($req1);
$req2= "DELETE FROM mail_temp
WHERE mail IN (SELECT mail FROM newsletter)";
$exec2 = mysql_query($req2);
$req3= "INSERT INTO newsletter(mail, valide)
SELECT mail FROM mail_temp";
$exec3 = mysql_query($req3);
$req4= "UPDATE newsletter SET valide = 1 WHERE valide IS NULL";
$exec4 = mysql_query($req4);
$req5= "DROP TABLE mail_temp";
$exec5 = mysql_query($req5);*/
Pour tester, j'ai tout passé en commentaire, et n'ai gardé que la première requête, d’où le fait que je me rende compte qu'elle ne fonctionne pas, puisqu'en me connectant à phpmyadmin, je constate que la table mail_temp existe, mais qu'elle est vide !
Merci pour votre aide, et désolé de ressortir un énième fois ce problème, mais j'ai essayé plein de solutions que vous fournissez ici sans succès...
Olivier.