IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Export de données - Auto-incrémente


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut Export de données - Auto-incrémente
    Bonjour !

    Je viens vers vours car une quesiton me turlupine, et je ne trouve pas la réponse sur le net...

    La version courte :
    J'utilise SQLServer 2008, et j'utilise SSMS pour faire des exports de données.
    Pas de soucis, en configurant l'export, j'exporte bien les données, les tables si besoin etc... sauf que, ça m'exporte également l'ID de la table, qui est un auto-incrémente.

    Exemple :
    Code T-SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SET IDENTITY_INSERT [coc].[T_G61_CNIT] ON
    INSERT [schema].[SSA_TABLE] ([SSA_TABLE_ID], [SSA_TABLE_COL1], [SSA_TABLE_COL2], [SSA_TABLE_COL3], [SSA_TABLE_COL4]) VALUES (1278, N'BLABLALBA', N'BLABLA', N'BLABLA', CAST(0x97340B00 AS Date))
    SET IDENTITY_INSERT [coc].[T_G61_CNIT] OFF

    Or, le but de cet export est de pouvoir importer dans une base (similaire) qui a des données potentiellement différentes.
    Je veux donc pouvoir utiliser l'auto-incrémente de la base cible.

    Pour cela, il faudrait que mon export ressemble à ça :
    Code T-SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT [schema].[SSA_TABLE] ([SSA_TABLE_COL1], [SSA_TABLE_COL2], [SSA_TABLE_COL3], [SSA_TABLE_COL4]) VALUES (N'BLABLALBA', N'BLABLA', N'BLABLA', CAST(0x97340B00 AS Date))

    Et malheureusement, je ne vois pas comment paramétrer SSMS pour arriver à ce résultat. Est-ce possible en ligne de commande ? Est-ce tout bêtement impossible ?

    Merci d'avance !

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    As-tu essayer ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT [BaseCible].[schema].[SSA_TABLE] ([SSA_TABLE_COL1], [SSA_TABLE_COL2], [SSA_TABLE_COL3], [SSA_TABLE_COL4])
     
    SELECT [SSA_TABLE_COL1], [SSA_TABLE_COL2], [SSA_TABLE_COL3], [SSA_TABLE_COL4] 
    FROM [BaseSource].[schema].[SSA_TABLE]
    je suppose que les noms des tables et des colonnes sont identiques dans les 2 bases.
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    On passe par un export/import car on n'a pas de connexion possible entre les deux bases (sinon on pourrait faire un export directement, auquel cas on peut paramétrer l'auto-incrémente).
    En gros, l'une est dans le "bac à sable", l'autre est sur un serveur avec accès limité, et pas dans le même pays, zone de sécurité différente, etc..

    Du coup je ne pourrais pas utiliser cette méthode non plus.

    Merci quand même, car je ne connaissais pas, ça me servira sûrement un jour !

  4. #4
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Une approche possible:
    Chargez votre fichier dans une table temporaire localisee sur votre serveur/DB de destination et realisez un insert dans votre table finale comme decrit par zinzineti.

  5. #5
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Citation Envoyé par Ptit_Dje Voir le message
    Une approche possible:
    Chargez votre fichier dans une table temporaire localisee sur votre serveur/DB de destination et realisez un insert dans votre table finale comme decrit par zinzineti.
    Merci pour cette piste, a priori cela serait faisable.

    Citation Envoyé par SQLpro
    Si votre table destination possède aussi un auto incrément, il n'y aura aucun problème lors de l'intégration des données. L'auto incrément est ignoré par les commandes BCP.exe et par BULK INSERT, à moins que vous ne spécifiez explicitement KEEP IDENTITY.
    Pas sûr qu'on puisse utiliser BCP dans l'environnement en question, mais dans le doute je vais essayer.
    Pour info, mes commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bcp base.schema.SSA_TABLE out C:\Temp\test.dat -N -UuserName -S SERVER\INSTANCE
    Code T-SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    USE INSTANCE
     
    GO
    BULK INSERT schema.SSA_TABLE
        FROM 'C:\Temp\test.dat' 
       WITH (DATAFILETYPE='widenative'); 
    GO
    SELECT [SSA_TABLE_COL1],[SSA_TABLE_COL2],[SSA_TABLE_COL3],[CNISSA_TABLE_COL4] FROM schema.SSA_TABLE;
    GO

    Merci à vous !

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Si votre table destination possède aussi un auto incrément, il n'y aura aucun problème lors de l'intégration des données. L'auto incrément est ignoré par les commandes BCP.exe et par BULK INSERT, à moins que vous ne spécifiez explicitement KEEP IDENTITY.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. AUTO-Incrémentation de données de table avec ordre précis
    Par DelphiBeginner dans le forum Développement
    Réponses: 13
    Dernier message: 20/01/2015, 14h14
  2. Auto incrémentation de donnée avec Talend et Oracle
    Par louvah dans le forum Développement de jobs
    Réponses: 16
    Dernier message: 18/02/2014, 09h15
  3. Réponses: 4
    Dernier message: 02/03/2011, 19h13
  4. Importer des données et compteur auto incrémenté
    Par lutecefalco dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/04/2007, 10h27
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo