Bonjour,
Je suis embêtée car il a été mis en place des exports de tables par bcp, pour les réimporter dans un autre environnement.
Lorsqu'on rajoute une colonne dans les tables à exporter le bcp plante.
Pour l'instant ce qu'on fait, c'est qu'on rajoute ces colonnes dans le fichiers de sortie et cela fait qu'il faut modifier l'import dans l'autre environnement.
Y at-il un moyen pour
a/ qu'on n'ait pas à retoucher le fichier de format lorsque la table change
b/ou que le fichier de sortie n'ait pas les nouvelles colonnes même si on doit changer le fichier de format.

voilà des précisions .
L'instruction d'export :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SET CNetEnv="DEV"
bcp CDAP_%CNetEnv%.dbo.tadi out "TADI.DAT" -T -f "tadi..xml"
Le fichier tadi..xml auquel il manque la nouvelle colonne.
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
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharFixed" LENGTH="9" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="2" xsi:type="CharFixed" LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharFixed" LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharFixed" LENGTH="32" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="5" xsi:type="CharFixed" LENGTH="32" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="6" xsi:type="CharFixed" LENGTH="32" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="7" xsi:type="CharFixed" LENGTH="5" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="8" xsi:type="CharFixed" LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="9" xsi:type="CharFixed" LENGTH="2" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="10" xsi:type="CharFixed" LENGTH="2" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="11" xsi:type="CharFixed" LENGTH="1" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="12" xsi:type="CharFixed" LENGTH="15" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="13" xsi:type="CharFixed" LENGTH="23"/>
  <FIELD ID="14" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="23"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="TADI_ADI_COD" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="2" NAME="TADI_MED_NOM" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="3" NAME="TADI_MED_PRE" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="4" NAME="TADI_MED_AD1" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="5" NAME="TADI_MED_AD2" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="6" NAME="TADI_MED_AD3" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="7" NAME="TADI_PTT_COD" xsi:type="SQLCHAR"/>
  <COLUMN SOURCE="8" NAME="TADI_MED_VIL" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="9" NAME="TADI_CRP_COD" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="10" NAME="TADI_MED_ACT" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="11" NAME="TADI_ALB_FLG" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="12" NAME="TADI_ADI_MAT" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="13" NAME="TADI_OUV_DAT" xsi:type="SQLDATETIME"/>
  <COLUMN SOURCE="14" NAME="TADI_FER_DAT" xsi:type="SQLDATETIME"/>
 </ROW>
</BCPFORMAT>
Le message d'erreur lorqu'on le joue sur une table ayant une colonne supplémentaire:
D:\soazig>bcp CDAP_%CNetEnv%.dbo.tadi out "TADI.DAT" -T -f "tadiinit..xml" -S et
ud06
SQLState = HY000, NativeError = 0
Error = [Microsoft][SQL Native Client]Le nombre de champs fourni pour l'opératio
n bcp est inférieur au nombre de colonnes sur le serveur.
Le fichier tadi..xml modifié avec la colonne en plus TADI_MED_TYP, qui exporte bien mais avec la colonne TADI_MED_TYP en trop.
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
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<RECORD>
		<FIELD ID="1" xsi:type="CharFixed" LENGTH="9" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="2" xsi:type="CharFixed" LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="3" xsi:type="CharFixed" LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="4" xsi:type="CharFixed" LENGTH="32" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="5" xsi:type="CharFixed" LENGTH="32" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="6" xsi:type="CharFixed" LENGTH="32" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="7" xsi:type="CharFixed" LENGTH="5" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="8" xsi:type="CharFixed" LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="9" xsi:type="CharFixed" LENGTH="2" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="10" xsi:type="CharFixed" LENGTH="2" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="11" xsi:type="CharFixed" LENGTH="1" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="12" xsi:type="CharFixed" LENGTH="15" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
		<FIELD ID="13" xsi:type="CharFixed" LENGTH="23"/>
		<FIELD ID="14" xsi:type="CharFixed" LENGTH="23"/>
		<FIELD ID="15" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="1"/>
	</RECORD>
	<ROW>
		<COLUMN SOURCE="1" NAME="TADI_ADI_COD" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="2" NAME="TADI_MED_NOM" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="3" NAME="TADI_MED_PRE" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="4" NAME="TADI_MED_AD1" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="5" NAME="TADI_MED_AD2" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="6" NAME="TADI_MED_AD3" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="7" NAME="TADI_PTT_COD" xsi:type="SQLCHAR"/>
		<COLUMN SOURCE="8" NAME="TADI_MED_VIL" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="9" NAME="TADI_CRP_COD" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="10" NAME="TADI_MED_ACT" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="11" NAME="TADI_ALB_FLG" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="12" NAME="TADI_ADI_MAT" xsi:type="SQLVARYCHAR"/>
		<COLUMN SOURCE="13" NAME="TADI_OUV_DAT" xsi:type="SQLDATETIME"/>
		<COLUMN SOURCE="14" NAME="TADI_FER_DAT" xsi:type="SQLDATETIME"/>
		<COLUMN SOURCE="15" NAME="TADI_MED_TYP" xsi:type="SQLVARYCHAR"/>
	</ROW>
</BCPFORMAT>
Cordialement
Soazig