Insertion de données

Fermé
rv1962 Messages postés 7 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 14 février 2014 - 20 janv. 2014 à 21:48
rv1962 Messages postés 7 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 14 février 2014 - 12 févr. 2014 à 22:50
Bonjour,

J'ai besoin d'un peu d'aide pour compléter mon script d'insertion de données :D :

Pour exemple voici mon fichier txt ou csv:

01/12/2013 (format date donc toujours le même format nov-12 etc...)
12
0
42%
n/a
     (un ou plusieurs saut de ligne parfois)
01/12/2013
4
5


01/12/2013
2
etc..



Voici ma table :

 Field                  | Type    | Null | Key | Default | Extra          |
+------------------------+---------+------+-----+---------+----------------+
| id                     | int(11) | NO   | PRI | NULL    | auto_increment |
| date                 | date    | YES  |     | NULL    |                |
| valeur              | int(10) | YES  |     | NULL    |                |



Script shell :
#!/bin/sh

count=1
while read ligne  
do  
   if [ $count -eq 1 ]
   then
          date=$ligne
          "let count += 1"
   else
           mysql -uuser -ppassword base -e "INSERT INTO table (date,valeur) VALUE ($date,$ligne)"
   fi
done < fichier



Pourriez-vous m'aider à gérer les cas suivants pour bien remplir la table?
- les sauts de ligne (même s'il y en a plusieurs)
- les % (comme cela doit être des INT)
- et les répétitions de la date

Je vous remercie par avance pour votre aide.

1 réponse

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
21 janv. 2014 à 20:39
Bonsoir,
Pour les sauts de ligne, vérifie simplement via un if que ta ligne n'est pas vide, sinon => continue

Pour la date, si tes formats sont bon, fais une regex, ou un test sur l'existence du caractère /, si tu le trouve, tu change ta variable $date (et tu fais un continue pour zapper l'insert), sinon tu le laisse comme il est (Il gardera donc celle de la précédente date)

Et enfin, pour tes valeurs, tu ne peut pas sauvegarder ton % dans un int, vu que texte et virgule sont interdit, soit tu intval ta variable (42% se transformera donc en 42) soit tu change le type de ton champ.
0
rv1962 Messages postés 7 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 14 février 2014
12 févr. 2014 à 22:50
Merci pour ta réponse. En fait j'ai réussi assez rapidement, faudrait que je poste le script au cas ou ça intéresse quelqu un.
0