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 :
Fichier fichier_tmp_testbcp.txt :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 #!/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
Résultat du script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 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
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 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
Partager