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

Développement SQL Server Discussion :

[SQL2K5] Importer un ficher texte avec BULK INSERT dans une table existante.


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut [SQL2K5] Importer un ficher texte avec BULK INSERT dans une table existante.
    Bonjour, après plusieurs recherche je n'ai pas trouvé de réponse précise a ma question donc même si ce genre de question a déjà été posé je me permet de la reposer, mais différemment.

    Donc voila j'ai fichier texte comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1;"AT";"DE";"Burgenland";"Eisenstadt";"";"";"7000";"Eisenstadt";"";47.84588;16.51807
    2;"AT";"DE";"Burgenland";"Eisenstadt";"";"";"7011";"Siegendorf im Burgenland";"";47.78916;16.56001
    J'aimerais donc inserer ce fichier ds une table SQL qui comprend les champ.

    id int
    codeVilleID varchar(10)
    codePays varchar(50)
    codeLanguage varchar(50)
    region1 varchar(50)
    region2 varchar(50)
    region3 varchar(50)
    region4 varchar(50)
    zip varchar(50)
    ville varchar(50)
    area varchar(50)
    lat varchar(50)
    long varchar(50)

    le champ codeVilleID correspont au premier champ du fichier texte.
    le champ ID n'est quand a lui pas rempli via le fichier texte mais incrémenté directement par SQL server.

    comment faire donc via la commande BULK INSERT je suppose, pour entrer toutes les lignes de mon fichier texte dans ma table avec le premeir champ ID auto incrémenté par SQL server?

    Si qqn a exemple ou une idée? merci d'avance

  2. #2
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    D'après ce que j'ai compris de la MSDN ici http://msdn.microsoft.com/en-us/library/ms188365.aspx et là http://msdn.microsoft.com/en-us/library/ms187887.aspx, il suffit de mettre une valeur nulle dans le fichier pour le champ sur lequel on veut que la valeur par défaut soit insérée.

    Il va donc falloir rajouter un point virgule en début de chaque ligne. (Si j'ai bien compris...)

    Cordialement,

    Arkhena

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Salut,

    En fait, si j'ajoute mon id qui sert de clé primaire apres l'importation il n'y aucun probleme. Donc je vais l'ajouter apres.
    En revanche du coup, l'importation est reussie mais pour la premeire colonne, il me remplace le 1 du premier champ par '1++ dans la base de donnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BULK INSERT Pegase.dbo.Ville
    FROM 'C:\GeoPC_EUtest.txt'
    WITH (
    	DATAFILETYPE = 'char',
        FIELDTERMINATOR = ';',
        ROWTERMINATOR = '\n'
    )
    GO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ´++1	"AT"	"DE"	"Burgenland"	"Eisenstadt"	""	""	"7000"	"Eisenstadt"	""	47.84588	16.51807
    On peux voir ci dessus le '1++. De plus j'aimerais virer les " des champ string lor de l'importation pour ne pas les retrouver dans la BDD.... une idée?

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez conserver l'auto-incrémentation en utilisation l'instruction OPENROWSET avec ses options BULK et SINGLE_CLOB, comme je l'ai montré dans ce petit billet

    @++

Discussions similaires

  1. INSERER DU TEXTE AVEC DES CHAMPS DANS UNE REQUETE SUR sql Srv 2000
    Par sauceaupistou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/03/2007, 10h02
  2. Problème avec Insert dans une table contenant deux clés
    Par pure_blue dans le forum Accès aux données
    Réponses: 5
    Dernier message: 23/10/2006, 19h32
  3. [Conception] Problème avec INSERT dans une TABLE
    Par dunbar dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 20/07/2006, 12h56
  4. Réponses: 3
    Dernier message: 24/04/2006, 21h03
  5. Réponses: 3
    Dernier message: 10/02/2006, 15h48

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