insérer en une seule fois des milliers de tuples
6 messages
• Page 1 sur 1
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
insérer en une seule fois des milliers de tuples
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 :
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.
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: Tout sélectionner
: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.
-

arnaudmn - WRInaute passionné

- Messages: 1542
- Inscription: 11 Mai 2005
Re: insérer en une seule fois des milliers de tuples
Meeuuuhhh a écrit: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.
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
Salut arnaudmn,
Je les maîtrise pas mais bon, je ferais avec...
Tu me rassures
En gros je dois obtenir ça, avant de le placer dans phpMyAdmin, non ?
Le truc c'est de passer du fichier tel que dans mon premier post à celui-ci...
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
En gros je dois obtenir ça, avant de le placer dans phpMyAdmin, non ?
- Code: Tout sélectionner
$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...
-

arnaudmn - WRInaute passionné

- Messages: 1542
- Inscription: 11 Mai 2005
Meeuuuhhh a écrit:En gros je dois obtenir ça, avant de le placer dans phpMyAdmin, non ?
Absolument
Meeuuuhhh a écrit: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
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
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...
-

Meeuuuhhh - WRInaute passionné

- Messages: 2046
- Inscription: 8 Jan 2007
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 :
et j'obtiens ça :
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: Tout sélectionner
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
\« 
----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
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Insérer 700 tuples avec une boucle while
- Question con et posée des milliers de fois mais...
- str_replace ... une seule fois ...
- Beaucoup de BLs en une seule fois
- Message qui s'affiche une seule fois
- Php/MySQL Utiliser pls fois le résultat d'une seule requête
- Sur 14 tuples, seuls 12 s'affichent
- mysql : Problème avec une condition AND et deux tuples
- problème de requête SQL : elle me retourne tous les tuples
- Seule 1 seule page est référencée !
Consultez la description détaillée des produits ou services de Google suivants : Google Catalogs, Google News
- Test data centers Google
Cet outil vous permet d'afficher sur une seule page les résultats Google effectués sur de nombreux data centers (centres de données). - Indice de densité
Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page. - Déterminer l'âge d'un site
Cet outil vous permet de connaître une estimation de l'ancienneté d'un site : il fournit la date à laquelle Google l'a indexé la première fois (et la même chose pour archive.org).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
