BCP utilité données corrompt
-
21-08-2019 - |
Question
Je dirigeais une copie en bloc de deux colonnes d'une table d'un serveur à un autre.
Le tableau du côté source a environ 8 colonnes, mais je ne ai besoin 2.
Le tableau sur le côté de destination dispose de 2 colonnes (les deux que j'ai besoin, les deux sont de type int)
Les deux bases de données sont SQL Server 2005.
Voici mes deux commandes bcp:
c:\> bcp "select c1, c2 from srcTable" queryout tableData.bcp -N -T -S srcServer
c:\> bcp destTable in tableData.bcp -N -T -S destServer
Pourquoi cette corruption les données dans la table de destination? Je devrais obtenir de belles, entiers séquentiels, au lieu que j'obtiens ceci:
c1 c2
586332 83014148
123128736 -105042384
-561616278 -309997736
Qu'est-ce que je fais mal?
La solution
Got it.
La définition de la colonne doit correspondre exactement -. y compris si elle est NULL ou NOT NULL
La source avait:
srcTable (
c1 int not null (PK)
c2 int null
c3 datetime not null
c4 datetime null
...
)
Le tableau de destination avait:
destTable (
c1 int not null (PK)
c2 int not null
)
Le NOT NULL sur destTable.c2 était le bogue.
Il a été écrasé maintenant.