Utilisation d'une PK avec IDENTITY en insertion de données
2 réponses
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...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ?
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" <JIELPE53@discussions.microsoft.com> a écrit dans le message de
news: 7B461A63-810A-4099-8C3E-2150094F863A@microsoft.com...
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...
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 ?
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 ?
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" <JIELPE53@discussions.microsoft.com> a écrit dans le message de
news: 7B461A63-810A-4099-8C3E-2150094F863A@microsoft.com...
> 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 ?
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 ?