Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1333 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Sybase ASE 12 - BCP] Options du bcp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Sybase ASE 12 - BCP] Options du bcp

n°843546
ls_one
Posté le 06-09-2004 à 17:14:02  profilanswer
 

Bonjour,
 
Je souhaite charger les données d'un fichier dans une table. Mais il faut que j'intégre uniquement les données valides (les lignes valides du fichier) dans la table et mettre les données erronées dans un autre fichier.
J'utilise cette commande dans un batch :

bcp mutubatch..tmp_testbcp in fichier_tmp_testbcp.txt -U sa -P  -c -t";" -e erreur.txt -m 2

 
Et le problème est que toutes les lignes sont intégrées dans la table même celles qui ne correspondent pas à la structure de la table, elles sont tronquées. Mon fichier de données à 5 lignes dont trois erronées donc normalement je devrais avoir 2 lignes intégrées et 3 redirigées dans le fichier erreur.txt. Or j'obtiens pas ça. Comment faire ?
 
Merci,
ls
 
Annexes
 
Script shell :
#!/bin/csh
 
# Batch  : TestBcp.csh    
# Realise par : S.Lechable    
# But  :        
 
echo "Début du script - "$0
date
echo "Paramètre : "$1
 
#################################
# Paramètres  #
#################################
 
set EXTENSION=`date +"%Y%m%d"`
set fic_trace=/home/sybase/admin/batch/test/trace/"TESTBCP.TRACE."$EXTENSION
 
####################################################################
#                                 Sql                              #
####################################################################
 
doit << EOFile
 
select '# Début trace Sql ' , getdate()
go
 
use mutubatch
go
 
/**********************************************************************/
select '# Si les tables temporaires existent, elles sont supprimées.' , getdate()
go
 
if exists (select * from sysobjects where name='tmp_testbcp')
 drop table tmp_testbcp
go
 
/**********************************************************************/
select '# Création des tables temporaires.' , getdate()
go
 
create table tmp_testbcp  
(
chp1 char(2) null,
chp2 char(2) null,
chp3 char(2) null,
chp4 char(2) null,
chp5 char(2) null,
chp6 char(2) null,
chp7 char(2) null,
chp8 char(2) null
)
go
 
EOFile
 
# BCP - Insertion des données dans les tables temporaires  
 
echo "Insertion des données des fichiers dans les tables temporaires"
 
bcp mutubatch..tmp_testbcp in fichier_tmp_testbcp.txt -U sa -P  -c -t";" -e erreur.txt -m 2
 
echo "Fin du script - "$0
date
 
Fichier fichier_tmp_testbcp.txt :
 
ll;lo;lp;re;kr;pe;bv;op
ll;lo;lp;re;kr;pe;bv;op
ll;lo;rlp;re;kr;pe;bv;op
ll;lo;lp;re;krr;pe;bv;op
4ll;lo;lp;re;kr;pe;bv;op
 
Résultat du script :
 
Début du script - TestBcp.csh
Mon Sep  6 14:56:20 MEST 2004
Paramètre :  
                                               
 ------------------ --------------------------  
 # Début trace Sql         Sep  6 2004  2:56PM  
 
(1 row affected)
                                                                                         
 ------------------------------------------------------------ --------------------------  
 # Si les tables temporaires existent, elles sont supprimées.        Sep  6 2004  2:56PM  
 
(1 row affected)
                                                               
 ---------------------------------- --------------------------  
 # Création des tables temporaires.        Sep  6 2004  2:56PM  
 
(1 row affected)
Insertion des données des fichiers dans les tables temporaires
 
Starting copy...
CSLIB Message:  - L0/O0/S0/N36/1/0:
cs_convert: cslib user api layer: common library error: The result is truncated because the conversion/operation resulted in overflow.
CSLIB Message:  - L0/O0/S0/N36/1/0:
cs_convert: cslib user api layer: common library error: The result is truncated because the conversion/operation resulted in overflow.
CSLIB Message:  - L0/O0/S0/N36/1/0:
cs_convert: cslib user api layer: common library error: The result is truncated because the conversion/operation resulted in overflow.
 
5 rows copied.
Clock Time (ms.): total = 1000  Avg = 200 (5.00 rows per sec.)
Fin du script - TestBcp.csh
Mon Sep  6 14:56:21 MEST 2004


Message édité par ls_one le 06-09-2004 à 17:16:34
mood
Publicité
Posté le 06-09-2004 à 17:14:02  profilanswer
 

n°843898
instantdha​rma
Ailleurs c'est ici
Posté le 07-09-2004 à 09:12:18  profilanswer
 

salut
A ce que je sache, le bcp ne renvoie pas les lignes erronées telles quelles du moins sous windows ; ds ta commande, tu vas juste récupérer les messages d'erreurs issus du bcp dans un fichier nommé erreur.txt...
bcp sert à intégrer un fic dans une base, mais il ne remplace pas un programme ou une moulinette d'insertion...
 
apparté
toi aussi t'es dans l'informatique mutualiste ? mutubatch, ça trompe pas !!!  :D


---------------
di. / www.diredaredare.org - Ailes de la ville
n°843934
ls_one
Posté le 07-09-2004 à 09:41:46  profilanswer
 

instantdharma a écrit :

salut
A ce que je sache, le bcp ne renvoie pas les lignes erronées telles quelles du moins sous windows ; ds ta commande, tu vas juste récupérer les messages d'erreurs issus du bcp dans un fichier nommé erreur.txt...
bcp sert à intégrer un fic dans une base, mais il ne remplace pas un programme ou une moulinette d'insertion...
 
apparté
toi aussi t'es dans l'informatique mutualiste ? mutubatch, ça trompe pas !!!  :D


Je travaille sous solaris et en fait je récupère rien dans erreur.txt, je ne comprends pas pourquoi !

n°843981
docmaboul
Posté le 07-09-2004 à 10:40:30  profilanswer
 

ls_one a écrit :

Je travaille sous solaris et en fait je récupère rien dans erreur.txt, je ne comprends pas pourquoi !


 
Vous utilisez quelle version de sybase et de la cslib?
 
edit: je n'avais pas vu que c'était dans le titre. D'après les sybooks de la 12.5, cela devrait partir en erreur. Vous avez essayé de faire le bcp avec un fichier de format?


Message édité par docmaboul le 07-09-2004 à 11:56:00
n°844018
instantdha​rma
Ailleurs c'est ici
Posté le 07-09-2004 à 11:36:24  profilanswer
 

DocMaboul est ds le vrai ; il te faut vérifier la version du bcp (qui doit correspondre à celle de ton client Sybase) & vérifier la syntaxe ds la doc...
d'ailleurs, (avec ma version de bcp) c'est -o <fichier> pour les erreurs, pas -e.
Mais je le redis : le bcp est fait pour charger / décharger les données, pas pour faire du contrôle ou de la vérification lors du chargement. Il vaut mieux charger les données ds une table qui accepte le fichier d'entrée puis faire une proc pour traiter la table d'entrée et gérer les erreurs diverses et variées.
Mais bon, c'est ce que j'en dis...


---------------
di. / www.diredaredare.org - Ailes de la ville
n°844043
docmaboul
Posté le 07-09-2004 à 11:57:44  profilanswer
 

instantdharma a écrit :

Mais je le redis : le bcp est fait pour charger / décharger les données, pas pour faire du contrôle ou de la vérification lors du chargement. Il vaut mieux charger les données ds une table qui accepte le fichier d'entrée puis faire une proc pour traiter la table d'entrée et gérer les erreurs diverses et variées.
Mais bon, c'est ce que j'en dis...


 
Oui et d'autant plus que le bcp est fait pour charger massivement des données et que pour faire ça bien, c'est-à-dire vite, il fait sauter quasiment tous les contrôles :D

n°844083
ls_one
Posté le 07-09-2004 à 12:22:41  profilanswer
 

instantdharma a écrit :

DocMaboul est ds le vrai ; il te faut vérifier la version du bcp (qui doit correspondre à celle de ton client Sybase) & vérifier la syntaxe ds la doc...
d'ailleurs, (avec ma version de bcp) c'est -o <fichier> pour les erreurs, pas -e.
Mais je le redis : le bcp est fait pour charger / décharger les données, pas pour faire du contrôle ou de la vérification lors du chargement. Il vaut mieux charger les données ds une table qui accepte le fichier d'entrée puis faire une proc pour traiter la table d'entrée et gérer les erreurs diverses et variées.
Mais bon, c'est ce que j'en dis...


 
Je viens d'avoir le hot line Sybase et effectivement le bcp est fait pour charger / décharger les données, pas pour faire du contrôle ou de la vérification lors du chargement.
L'option -o redirige les erreurs type warning comme CSLIB par exemple...
L'option -e redirige les erreurs fatales, comme arret du serveur ....
Le mieux est que je développe un prog qui analyse la structure du fichier avant le bcp et qui effectue le tri entre les lignes valides et les lignes erronées.....
Merci pour vos réponses !

n°1016919
gadafla
Posté le 18-03-2005 à 09:58:06  profilanswer
 

Pour ma part, j'ai trouve une des raisons (surement plusieurs, j'imagine) qui me donnait exactement la meme erreur.
Mon client m'envoie des dates au format classique jj/mm/aaaa. Or Sybase integre les donnees au format mm/jj/aaaa. Donc, en gros, une bonne partie de mes dates etaient erronnees.
 
Sybase, si tu n'existais pas.. ca serait tellement plus simple ^^
 
PS: dsl de repondre a un post qui date de +ieurs mois


Message édité par gadafla le 18-03-2005 à 10:00:11
n°1174841
IsBack
Posté le 11-08-2005 à 18:30:09  profilanswer
 

gadafla a écrit :

Pour ma part, j'ai trouve une des raisons (surement plusieurs, j'imagine) qui me donnait exactement la meme erreur.
Mon client m'envoie des dates au format classique jj/mm/aaaa. Or Sybase integre les donnees au format mm/jj/aaaa. Donc, en gros, une bonne partie de mes dates etaient erronnees.
 
Sybase, si tu n'existais pas.. ca serait tellement plus simple ^^
 
PS: dsl de repondre a un post qui date de +ieurs mois


 
Sybase ASE est bien souple que Oracle, pour avoir pratiqué les deux je préfère largement sybase.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Sybase ASE 12 - BCP] Options du bcp

 

Sujets relatifs
comment passer bcp de données dans un formulaire ?[Sybase] calcul de date
options de sortPb options d'impression
options de compilationChanger la valeur des groupes d'options
[PostgreSQL] Migration de Sybase vers postgreSQLSybase,
Recuper la valeur des options selectionnees d'un selectlancer un batch avec les options "cmd /V:ON" automatiquement ?
Plus de sujets relatifs à : [Sybase ASE 12 - BCP] Options du bcp


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR