En modifiant le my.ini et supprimant le "default 0" j'ai le même truc bizarre qu'avec datetime : je n'ai aucune des deux colonnes de fin.
En modifiant le my.ini et supprimant le "default 0" j'ai le même truc bizarre qu'avec datetime : je n'ai aucune des deux colonnes de fin.
Christophe
Pensez à mettre quand c'est le cas.
1) j'ai testé avec des DATETIME, je n'ai aucun problème. Je pense que soit tes valeurs Access ne correspondent pas exactement à ton format, soit il y a un problème dans tes tests. Tu es sûr de ne pas avoir de secondes ?
Voici mon test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 create table employe( EMPLOYE_DEBUT DATETIME, EMPLOYE_FIN DATETIME, TXT_EMP_DEBUT varchar(20), TXT_EMP_FIN varchar(20) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TRIGGER oreDateIns BEFORE INSERT ON employe FOR EACH ROW SET NEW.employe_debut = STR_TO_DATE(NEW.txt_emp_debut, '%d/%m/%Y %H:%i'), NEW.employe_fin = STR_TO_DATE(NEW.txt_emp_fin, '%d/%m/%Y %H:%i'); INSERT INTO employe(txt_emp_debut, txt_emp_fin) VALUES ('01/07/2015 11:22', '07/01/2016 22:11') ; SELECT * FROM employe ;2) après avoir modifié le my.ini, il faut redémarrer MySQL.+---------------------+---------------------+------------------+------------------+
| EMPLOYE_DEBUT | EMPLOYE_FIN | TXT_EMP_DEBUT | TXT_EMP_FIN |
+---------------------+---------------------+------------------+------------------+
| 2015-07-01 11:22:00 | 2016-01-07 22:11:00 | 01/07/2015 11:22 | 07/01/2016 22:11 |
+---------------------+---------------------+------------------+------------------+
1 row in set (0.00 sec)
1) Il n'y a pas de secondes, du moins dans les 100 premières lignes ; je n'ai pas regardé toutes les lignes.
2) J'ai bien redémarré le serveur.
Je vais proposer une solution par FTP + shell faisant l'import. Cela me parait plus simple.
Christophe
Pensez à mettre quand c'est le cas.
Si tu refais mon test, ça donne quoi ?
Antoun, je ne pense pas pouvoir faire ton test aujourd'hui. Avec les Insert directs je ne me rappelle pas avoir eu de problème.
Christophe
Pensez à mettre quand c'est le cas.
Je passe par Access pour les imports !
Mais maintenant (après la réunion de cet après-midi) nous sommes d'accord pour abandonner cette solution et utiliser le FTP pour envoyer les fichiers qui seront chargés par "LOAD DATA INFILE".
Et là ça va beaucoup mieux.
Christophe
Pensez à mettre quand c'est le cas.
Salut Christophe.
J'ai pas bien compris.En modifiant le my.ini et supprimant le "default 0" j'ai le même truc bizarre qu'avec datetime : je n'ai aucune des deux colonnes de fin.
La directive à mettre dans le fichier "my.ini" doit se placer dans la section "wampmysqld" qui est le nom du service mysql.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [wampmysqld] explicit_defaults_for_timestamp = on
De plus, cette directive ne fonctionne que pour le type "timestamp" et non le type "datetime".
Si tu veux conserver la totalité du timestamp, à l'identique de ce qui existe sous DB2, tu dois mettre "timestamp(6)" pour avoir les millionièmes de secondes.
Il faut savoir, à l'inverse de DB2, que Mysql met la même valeur du timestamp, même si le chargement dure plusieurs minutes.
Et comme l'indique Antoun, ne pas oublier de "redémarrer les services", en cliquant sur cette option dans l'icône wampserver.
Comment vas-tu résoudre ton problème de format de la date ?Mais maintenant (après la réunion de cet après-midi) nous sommes d'accord pour abandonner cette solution et utiliser le FTP pour envoyer les fichiers qui seront chargés par "LOAD DATA INFILE".
Soit tu utilises ma fonction que tu peux introduire dans le 'LOAD DATA INFILE'.
Soit tu fais en sorte de ne pas avoir de date sous le mauvais format avant de charger ton fichier dans ta table mysql.
Si tu as un problème pour construire ton "LOAD DATA INFILE", il te suffit de nous indiquer ce que tu ne sais pas faire.
@+
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
Je vais spécifier le format de date dans le LOAD :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 LOAD DATA INFILE 'emp.csv' INTO TABLE employeFIELDS TERMINATED BY ';' IGNORE 1 LINES (Employe_CodeEmploye, Employe_Nom, Employe_Prenom, Employe_Statut, @Employe_Debut, @Employe_Fin) SET Employe_Debut = str_to_date(@Employe_Debut, '%d/%m/%Y %H:%i'), Employe_Fin = str_to_date(@Employe_Fin, '%d/%m/%Y %H:%i');
Christophe
Pensez à mettre quand c'est le cas.
Salut Christophe.
Voici un exemple de chargement d'une table à partir d'un fichier de type "text".
C'est dans cet exemple que j'ai fait mon test de la fonction chgdate.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 LOAD DATA LOCAL INFILE 'Charge.txt' INTO TABLE `Cities` CHARACTER SET latin1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 0 LINES (@F1, @F2, @F3, @F4, Population, Latitude, Longitude, @F8) set Country = trim(@F1), City = trim(@F2), AccentCity = trim(@F3), Region = trim(@F4), Date = outils.chgdate(@F8);
Attention à la syntaxe de ta ligne dans le fichier à charger.
Ici dans cet exemple, j'ai :
--> chaque champs est encadré par des guillemettes (").
Ce n'est pas obligatoire pour les champs numériques.
--> chaque champs se termine par une virgule (,) même sur le dernier champs de la ligne.
--> la ligne se termine par un '\n'. Il faut voir cela avec le format du fichier qui est du type windows.
Est-ce que tu as bien vérifié que tous les champs ont été chargés dans les bonnes colonnes ?
Si tu as un problème avec les espaces, utiliser la fonction "trim()" pour les supprimer.
Pour visualiser tes colonnes, tu peux faire un :
ainsi tu verras tout de suite si un blanc n'est pas venu s'insérer en début ou en fin de ta colonne de type 'text'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select concat('>', Country, '<') as 'Country', concat('>', City, '<') as 'City', ...
Sinon, je ne voie rien de particulier dans ton exemple.
@+
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager