OVH Cloud OVH Cloud

Utilisation d'une PK avec IDENTITY en insertion de données

2 réponses
Avatar
JIELPE53
Bonjour à tous,

je suis confronté à un problème ennuyeux.
Je dois charger -via un script- des données depuis un fichier texte vers une
base de données SQL Server 2000. La table de destination est munie
(évidemment) d'une PK avec IDENTITY pour l'incrémation automatique (pas de 1)
pour les nouveaux enregistrements.
Le problème est que mon fichier texte contenant plusieurs milliers de lignes
contient des valeurs dans ce champ PK et que je ne peux pas les modifier car
utilisées comme FK dans d'autres tables que je dois également importer.

Comment désactiver cette IDENTITY le temps de l'insertion de mes données.

Pour l'instant je passe par une commende BULK INSERT pour insérer mes
données depuis el fichier texte. J'ai essayé de rajouter des SET
IDENTITY_INSERT [Table_Destination] OFF et ON mais rien n'y fait...


Quelqu'un a-t-il une solution ?

2 réponses

Avatar
Gilles LE BARBIER
Argument possible sur BULK insert

KEEPIDENTITY
extrait de l'aide
Indique que les valeurs d'une colonne d'identité figurent dans le fichier
importé. Si KEEPIDENTITY n'est pas spécifié, les valeurs d'identité pour
cette colonne contenues dans le fichier de format importé ne sont pas prises
en compte, et SQL Server affecte automatiquement des valeurs uniques basées
sur une valeur de départ et sur un incrément spécifié durant la création de
la table. Si le fichier de données ne contient pas de valeurs pour la
colonne d'identité de la table ou de la vue, utilisez un fichier de format
pour spécifier que la colonne d'identité ne doit pas être prise en compte
lors de l'importation des données ; auquel cas SQL Server attribue
automatiquement des valeurs uniques à la colonne. Pour plus d'informations,
voir DBCC CHECKIDENT.



Gilles





"JIELPE53" a écrit dans le message de
news:
Bonjour à tous,

je suis confronté à un problème ennuyeux.
Je dois charger -via un script- des données depuis un fichier texte vers
une
base de données SQL Server 2000. La table de destination est munie
(évidemment) d'une PK avec IDENTITY pour l'incrémation automatique (pas de
1)
pour les nouveaux enregistrements.
Le problème est que mon fichier texte contenant plusieurs milliers de
lignes
contient des valeurs dans ce champ PK et que je ne peux pas les modifier
car
utilisées comme FK dans d'autres tables que je dois également importer.

Comment désactiver cette IDENTITY le temps de l'insertion de mes données.

Pour l'instant je passe par une commende BULK INSERT pour insérer mes
données depuis el fichier texte. J'ai essayé de rajouter des SET
IDENTITY_INSERT [Table_Destination] OFF et ON mais rien n'y fait...


Quelqu'un a-t-il une solution ?


Avatar
JIELPE53
Extra.

Je venais de le voir dans l'aide SQL Server au moment où j'ai lu votre
réponse.
Cela semble fonctionner.

Merci beaucoup pour la réactivité.

"Gilles LE BARBIER" a écrit :

Argument possible sur BULK insert

KEEPIDENTITY
extrait de l'aide
Indique que les valeurs d'une colonne d'identité figurent dans le fichier
importé. Si KEEPIDENTITY n'est pas spécifié, les valeurs d'identité pour
cette colonne contenues dans le fichier de format importé ne sont pas prises
en compte, et SQL Server affecte automatiquement des valeurs uniques basées
sur une valeur de départ et sur un incrément spécifié durant la création de
la table. Si le fichier de données ne contient pas de valeurs pour la
colonne d'identité de la table ou de la vue, utilisez un fichier de format
pour spécifier que la colonne d'identité ne doit pas être prise en compte
lors de l'importation des données ; auquel cas SQL Server attribue
automatiquement des valeurs uniques à la colonne. Pour plus d'informations,
voir DBCC CHECKIDENT.



Gilles





"JIELPE53" a écrit dans le message de
news:
> Bonjour à tous,
>
> je suis confronté à un problème ennuyeux.
> Je dois charger -via un script- des données depuis un fichier texte vers
> une
> base de données SQL Server 2000. La table de destination est munie
> (évidemment) d'une PK avec IDENTITY pour l'incrémation automatique (pas de
> 1)
> pour les nouveaux enregistrements.
> Le problème est que mon fichier texte contenant plusieurs milliers de
> lignes
> contient des valeurs dans ce champ PK et que je ne peux pas les modifier
> car
> utilisées comme FK dans d'autres tables que je dois également importer.
>
> Comment désactiver cette IDENTITY le temps de l'insertion de mes données.
>
> Pour l'instant je passe par une commende BULK INSERT pour insérer mes
> données depuis el fichier texte. J'ai essayé de rajouter des SET
> IDENTITY_INSERT [Table_Destination] OFF et ON mais rien n'y fait...
>
>
> Quelqu'un a-t-il une solution ?