insérer en une seule fois des milliers de tuples

WRInaute passionné
Bonjour,

J'ai un truc difficile à faire là, du moins pour mon modeste niveau en php.

Voilà : on m'a donné une liste de courts textes que je dois insérer dans la base de donnée. Le problème c'est qu'il y en a 3.000.

Alors insérer manuellement 3000 textes dans la base de donnée, c'est horrible.

Je vous montre comment ils se présentent :

Code:
:titre1# {{en sg. f.
{{CATEG 1 
texte texte texte {lien{ texte texte texte .
(12-08-2002).



:titre2# {{en sg. f.
{{CATEG 2 
texte texte texte {lien{ texte texte texte .
(12-08-2002).


:titre3# {{en sg. f.
{{CATEG 3 
texte texte texte {lien{ texte texte texte .
(12-08-2002).

Donc, le truc c'est : insérer le titre dans la champ 'titre', la catégorie dans le champ 'categorie', le texte dans le champ 'texte', la date dans le champ 'date' et de recréer les liens qui se trouve dans le texte.


L'idée c'est donc de se servir des caractères existants comme { ou {{ : puisque dans le fichier (initialement en PERL), ils servent à marquer les liens, les catégories ou le titre. Il faut aussi isoler la date.

Je pense y aller à grand coup de str_replace() et d'expressions régulières, mais avant de me lancer je voudrais votre avis sur le sujet.

Merci d'avance.
 
WRInaute passionné
Meeuuuhhh a dit:
Je pense y aller à grand coup de str_replace() et d'expressions régulières, mais avant de me lancer je voudrais votre avis sur le sujet.

Si tu maitrises les expressions régulière, utilise les. Sinon, vu la tete du fichier, en faisant quelques recherches dans les lignes du fichier, ça doit aller vite : le titre est sur la ligne commençant par ":" ; la catégorie commence par "{{" ; le texte est sur la 3eme lignes ; ....
Et l'insertion dans la base se fait lorsque les 4 lignes non vide ont été traitée.
 
WRInaute passionné
Salut arnaudmn,

Si tu maitrises les expressions régulière, utilise les.
Je les maîtrise pas mais bon, je ferais avec...

Sinon, vu la tete du fichier, en faisant quelques recherches dans les lignes du fichier, ça doit aller vite
Tu me rassures :D

En gros je dois obtenir ça, avant de le placer dans phpMyAdmin, non ?

Code:
$insert="INSERT INTO `textes` (`titre`,`categorie`,`texte`,`date`) 
VALUES ('titre1','CATEG 1','texte texte texte {lien{ texte texte texte .','(12-08-2002)')";
mysql_query($insert);

$insert="INSERT INTO `textes` (`titre`,`categorie`,`texte`,`date`) 
VALUES ('titre2','CATEG 2','texte texte texte {lien{ texte texte texte .','(12-08-2002)')";
mysql_query($insert);

$insert="INSERT INTO `textes` (`titre`,`categorie`,`texte`,`date`) 
VALUES ('titre3','CATEG 3','texte texte texte {lien{ texte texte texte .','(12-08-2002)')";
mysql_query($insert);

Le truc c'est de passer du fichier tel que dans mon premier post à celui-ci...
 
WRInaute passionné
Meeuuuhhh a dit:
En gros je dois obtenir ça, avant de le placer dans phpMyAdmin, non ?
Absolument

Meeuuuhhh a dit:
Le truc c'est de passer du fichier tel que dans mon premier post à celui-ci...

Quand j'ai ce genre de chose à faire, soit je fais un bout de programme (qu'il tester), soit je le fait dans Excel :) Suffit de copier bêtement tout le fichier dans Excel (tout dans la 1ere colonne), puis d'utiliser une formule pour créer les requetes dans la 2eme colonne.
 
WRInaute passionné
Quand j'ai ce genre de chose à faire, soit je fais un bout de programme (qu'il tester), soit je le fait dans Excel Suffit de copier bêtement tout le fichier dans Excel (tout dans la 1ere colonne), puis d'utiliser une formule pour créer les requetes dans la 2eme colonne.

Ah excel ça serait le top, manque de pot je ne l'ai pas, je vais voir si je peux faire quelque chose comme ça avec dreamweaver mais c'est pas gagné.

Ca me rassure quand même de savoir que tu as déjà eu des trucs dans le genre à faire, c'est donc pas mission impossible.

Bon je vais voir ce que je peux faire et je reviens quand j'ai du neuf, merci...
:?
 
WRInaute passionné
Salut !

Bon alors j'ai bidouillé le tout avec la fonction rechercher/remplacer de dreamweaver et pour commencer j'ai essayé ça en le copiant/collant dans phpmyadmin :

INSERT INTO `textes` (`titre`,`texte`) VALUES ('0 ' ' nb.
{{CHAR
Le zéro est souvent barré en informatique pour ne pas le confondre
avec les \« O \» : Ø. Mais dans ce cas là, il
ne faut pas le confondre avec l'ensemble vide, ni avec la lettre d'une
de ces langues nordiques qui contiennent 98 % de consonnes. C'est
pourquoi, sur certains systèmes, le zéro est un
\« O \» avec un point au milieu, ou un 0 barré à
l'envers. Depuis les années 1990, grâce à l'amélioration de la
définition des affichages, il est heureusement enfin possible d'avoir
des caractères suffisamment précis pour qu'un 0 ne soit pas un O (mais
cela n'empêche pas toujours certaines ambiguïtés).
(08-09-2002).
')

et j'obtiens ça :

Code:
Erreur
Il semble que vous ayiez trouvé une anomalie dans l'analyseur syntaxique SQL. Veuillez examiner votre requête attentivement, et vérifier que vos apostrophes sont conformes. Il se pourrait aussi que vous ayiez chargé un fichier dont le contenu binaire n'est pas entre apostrophes. Si vous avez accès à MySQL via son interface de commande en mode ligne, vous pouvez y essayer votre requête. Le message d'erreur présenté plus bas pourrait vous indiquer la source du problème. En dernier recours, veuillez trouver la plus courte requête possible qui cause le problème, et soumettre un rapport d'anomalie en incluant la section à couper:
----Début de la section à couper----
eNplUEFu2zAQvPMVc0jrFJAZWbZSWzkJhpAEkC1XclygyMG0RacEZFImJSNpnpQn9CM99tj8oqu0
aAIUxGIXO8uZnU3yPMsjTAeYBkiTeYThJKAYUoxZsSTsibHpqohwcl1GcIeqFtZJyyu14fXX2jsi
4Oc84CMEvj8684dnfojBOAqDKByhkvsJkvsaJ2z2UHxKI4Tc58F5vzJ37KbIkRUe4stkvvSwSkjt
s9KYZV+u0zTuRtliFkekEPKP/boasMXVopvzMlpoxOkhVbq9Z2k8v4yws33lTH88Dif9AXuRu54X
Sb6ktMywLuVOadUoo90ap2uyIKtKrr03wPoDsIrTm6TAac9Hj57ecPb4OL2Kc5ZKfHu2BtI1cKY9
St1gI6x9htRQemfsXjTq0ErUprXQlIWjI2BrCNSllUwc5ZY6DrdP78W+vtAbV19kr+Xt99c6wg+O
mVAOpdAOW+Lp6H56UBUj8p1om/8U8EehJ7WT+w0hR1VKD1r9BQRNNw3Nlb1WS1bSV9qmEvqupayN
LTsDDodWdaSNklp3PidjvEP5IuQMtRzHtEeHYJ3VQ2uUB0eet9I2QtG27sE1v/bSed12/67WavbG
+G8hCMvc
----Fin de la section à couper----
----Début des informations sur l'anomalie----

ERROR: C1 C2 LEN: 392 393 398
STR: «

CVS: $Id: sqlparser.lib.php,v 2.6.2.4 2004/03/05 18:52:54 lem9 Exp $
MySQL: 5.0.26-log
USR OS, AGENT, VER: Win MOZILLA 5.0
PMA: 2.5.7-pl1
PHP VER,OS: 4.4.4 Linux
LANG: fr-iso-8859-1
SQL: INSERT INTO `textes` (`titre`,`textes`)  VALUES ('0 ' ' nb.
{{CHAR
Le zéro est souvent barré en informatique pour ne pas le confondre
avec les \« O \» : Ø. Mais dans ce cas là, il
ne faut pas le confondre avec l'ensemble vide, ni avec la lettre d'une
de ces langues nordiques qui contiennent 98 % de consonnes. C'est
pourquoi, sur certains systèmes, le zéro est un
\«&nbsp

----Fin des informations sur l'anomalie----

requête SQL : 

INSERT INTO `definitions` (`libelle`,`definition`) VALUES ('0 ' ' nb. {{CHAR Le zéro est souvent barré en informatique pour ne pas le confondre avec les \« O \» : Ø. Mais dans ce cas là, il ne faut pas le confondre avec l'ensemble vide, ni avec la lettre d'une de ces langues nordiques qui contiennent 98 % de consonnes. C'est pourquoi, sur certains systèmes, le zéro est un \« 

MySQL a répondu:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ensemble vide, ni avec la lettre d'une
de ces langues nordiques qui contiennent' at line 1
 
Discussions similaires
Haut