|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Bonjour à tous,
je cherche à bcp_in un fichier txt dans lequel j'ai des champs de type date Dans mon fichier txt mon format date est de type 123 : yyyy-mm-dd THH:mm:sss Dans ma table d'import mon format date est de type Défault + milliseconds soit 109 et s'écrit donc : mon dd yyyy hh:mm:sss AM (or PM) Les solution communément proposées semble être de passer par une table temporaire pour récupérer mes champs sous sybase puis utiliser convert dans sybase pour modifier le format ou encore de modifier les options de sybase ou encore modifier les paramètres régionaux de l'OS, etc... etc... ![]() Merci pour toute information ou piste d'information |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Une idée m'est venue : utiliser un format de fichier !
La manière la plus simple de le créer me semble être de lancer mon bcp_in sans option de format afin d'accéder au prompt. Je laisse alors les attributs par défaut des champs qui ne sont pas des dates. J'indique pour tout les champs date mon format. Si ça tourne je sauvegarde le tout lorsque bcp m'indique : "Do you want to create a file format ?" Dès lors (si tout roule) je peux lancer un .BAT qui se référe à ce file format. Toutefois j'ai un problème : Quand bcp me demande le type à associé aux champs correspondant au date (par défaut smalldatetime) j'aimerai pouvoir lui indiquer la syntaxe particulière de mon champ. J'ai essayé une tournure utilisée par LOAD TABLE à savoir DATETIME('yyyy-mm-dd HH:mm:sss') et beaucoup d'autres choses encore et ma fois rien ne fonctionne. Au vu de ce post et du précédent auriez-vous une idée... une piste... Peut-être devrais utiliser les codes de format date ODBC (dans mon cas 109 et 123) ? Je ne sais pas trop où chercher... MERCI. |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Personne n'a la moindre idée pour me sortir de là ?
J'aimerai assez me passer de l'écriture d'un prog en C pour convertir dans le bon format les dates de mon txt. |
|
|
00
|
|
|
#4 | ||||||||
![]() ![]() |
Hmmm...
Quelle version d'ASE? Je viens de tester avec 15.0.2: Code :
Code :
Code :
Version de bcp: Code :
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||||||||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Salut,
tout d'abord merci pour le post. Comme tu es peut-être encore en visite sur le site je voulais te demander comment faire pour voir la version ASE. J'ai fait un bcp -v et les copiright sont pas tout jeune (87 et 98), je n'arrive pas pour le moment à en savoir plus sur la version bcp. Quoiqu'il en soit je vais regarder tout ça de plus près (en faisant du pas à pas avec un petit fichier de texte -- comme tu l'as fait). En réalité mes dates dans mon fichier texte sont sous la forme suivante : 2007-05-15 17:27:00.0 Je vais donc essayer de les mettre exactement au format que tu as utilisé avant d'aller plus loin. A savoir : 2008-01-01 T08:05:20 A quoi sert le T (c'est pour Time ? Je pense que je posterai demain (Mardi) ou Mercredi pour donner du nouveau (en ce moment je suis sur quelque chose que je ne peux repousser) et ma fois ce post est fait pour que le prog soit plus générique (donc ça peux attendre encore 24 H). D'ici là n'hésite pas à me donner des infos sur le "T", son histoire et la norme ISO pour les dates. Voili voilou... Encore merci pour la réponse très claire. |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
OK,
pour ce qui est de la version de bcp c'est 11.1.1 pour moi. Je vais essayer de voir si on peut la mettre à jour. J'avais mal lu ton post décidément très très clair. ![]() Encore merci. Je débute est c'est pas tout les jours facile. |
|
|
00
|
|
|
#7 |
![]() ![]() |
Pour info - la version d'ASE:
Une version de bcp plus récente avec un ASE plus ancien pourrait ne pas marcher mieux que ta version actuelle. Si c'est le cas, je suggère un petit script perl pour mettre la date dans un format compréhensible par bcp/ASE. Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Bonjour,
j'ai eu un peu le temps de me pencher sur le problème. Ma version de ASE est la 12.5.4 : Code :
Adaptive Server Enterprise/12.5.4/EBF 14065 ESD#3/P/Sun_svr4/OS 5.8/ase1254/2030/64-bit/FBO/Sat Oct 14 07:19:31 2006 J'ai réalisé le petit test solution dont tu m'as parlé mais rien n'y fait j'ai un message explicite qui indique un problème de conversion. C'est sûrement du au date car quand j'enlève les champs qui s'y rapportent dans mon txt les erreurs sont levées et je récupére bien mes données sous Sybase. Du coup, comme je ne suis pas admin sur ma machine (et que je ne risque pas de mettre à jour mon ASE avant un moment je pense), j'avais dans l'idée de créer un code C pour la conversion afin de générer un executable du type conversion_date.exe. Puis enfin d'inclure le tout dans un .BAT. Toutefois, tu m'indiques que Perl se prette parfaitement à ma tache. Peux-tu m'en dire plus. Enfin, y-a-t-il des solutions de type "mise à jour" ou "update" pour passer à la dernière version de ASE ou bien doit-on tout réinstaller ? Cordialement, Enfin une petite question de débutant : c'est quoi cette ligne : Code :
192.168.174.128 5010.my_db2.(sa).1> SELECT * FROM bcp_t; En ligne de commande ? J'utilise SQL advantage (très peu pratique) et je ne serai pas contre un changement. Bonne journée. |
|
|
00
|
|
|
#9 | |||
![]() ![]() |
Citation:
Citation:
Citation:
Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|||
|
|
00
|
|
|
#10 | ||||
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Bonjour,
et merci pour toutes ces infos. Pour l'instant, je n'ai pas forcément beaucoup de priviléges sur ma machine et donc la réinstallation du SDK, ou la mise à jour de Sybase n'est pas prévue pour demain. De ce fait, un script (ou bout de script) perl qui me permette de comprendre les fondamentaux et pourquoi pas de me lancer sur ce langage pourrait fortement m'intéresser. Supposons (ce qui est le cas) que j'ai un fichier source du type : Code :
Code :
Je n'ai pas trop (pas du tout) de connaissance sur le sujet. Faut-il un compilateur pour perl ? Crée-t-on un exe ou est-ce juste un script ? Encore merci pour les infos. PS pour mpeppler : jettes un coup d'oeil à tout ça si tu as le temps mais ne t'embettes pas trop car la priorité de ce boulot a fortement diminué. En fait tout ça m'intéresse dans le sens où j'ai quelques connaissances précises en C, C++ etc... mais pas sur les bases de données. Après avoir travaillé sur Sybase, bcp, etc.... je bosse maintenant en parallèle sur PostGre SQL et j'ai de gros soucis à la compil de l'API C (libpq.dll) de PostGre. |
||||
|
|
00
|
|
|
#11 | ||||
![]() ![]() |
Voici un petit script de conversion:
Code :
Code :
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||||
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Merci pour le script...
J'ai voulu tester rapidement mais je n'ai même pas perl d'installé sur mon poste et il me faut contacter le support pour l'avoir. Du coup je pense que je reposterai d'ici 10/15 jours pour te dire si tout est OK (c'est la moindre des choses). Pour le moment je suis dans le jus concernant un produit à livrer sous peu mais quand je vois la concision du script je me dis que ça vaut le coup d'y jeter un regard tranquille. Par contre n'as-tu pas un problème avec "la fonction" (je ne sais pas trop comment on appelle cela) months{$mon} car dans le résultat je ne vois pas le mois s'afficher alors que dans le script je "sens" bien que tu gère le problème à l'aide d'une sorte de SWITCH CASE : 1 => 'Jan', 2 => 'Feb', etc... A la limite ne m'en dit pas plus pour le moment, ça me laissera le temps de me pencher un peu sur le sujet... Encore merci pour ta disponibilité. C'est vraiment super sympa de ta part ! J'essaierai de renvoyer l'ascensceur à un autre étage un de ces 4 mais pour l'instant mes connaissances limitées ne me le permettent pas ;-) |
|
|
00
|
|
|
#13 | ||
![]() ![]() |
Bien vu!
%months est un tableau associatif. La clé est $mon, qui vient de la ligne source et est de la forme 05 (pour mai). Donc l'initialisation de %months doit être modifiée: Code :
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Encore merci pour ta disponibilité mpeppler
Je crois qu'au vu de ces posts on peut te décerner le prix de la réactivité !En attendant que le support m'installe perl, je vais télécharger un ou deux cours d'introduction. C'est vrai que pour manier les chaînes de caractère où faire des petits scripts utilitaires ça à l'air assez sympa. Et je reposte dès que j'ai pu faire mon fichier BAT d'import de manière générique en intégrant ton script. PS : pas forcément cette semaine car j'ai encore un peu d'huile sur le feu par ailleurs... |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : avril 2008 Messages : 89 ![]() |
Excuse-moi Michael j'avais pas vu que t'avais un prénom
Donc merci Michael. C'est quand même mieux comme ça... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com