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

MS SQL Server Discussion :

BULK INSERT


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut BULK INSERT
    BONJOUR

    Toujours dans le but d'inserer des donnees d un fichier txt vers ma base, et apres essayer bcp et osql j explore aussi la voix du BULK INSERT.
    alors voici: Mon fichier contient des lignes du genre:

    "000101 ";"0001";"99";"099";" ";" ";"rennes -FRANCE ";"O";"20040101";"20040101"
    ( c 'est une seule ligne)

    lorsque dans l'anlyseur de requete je lance cette requete:

    bulk insert TransfertUnix..ACHEMINEMENT from 'c:\script\achascii.txt'
    with (
    DATAFILETYPE = 'char',
    FIELDTERMINATOR = ';',
    ROWTERMINATOR = '/n'
    )
    go

    j ai l'erreur suivante :

    Serveur : Msg 4863, Niveau 16, État 1, Ligne 1
    Erreur de conversion de données à insérer en bloc (troncature) pour la ligne 1, colonne 1 (CODETIERS).
    Serveur : Msg 7399, Niveau 16, État 1, Ligne 1
    Le fournisseur OLE DB 'STREAM' rapporte une erreur. Le fournisseur n'a donné aucune information quant à cette erreur.
    L'instruction a été arrêtée.

    J ai verifié plusieurs fois la structure de ma table, elle semble bonne.
    En fai t j ai suivi une sorte de tutorial pour realiser la commande et l'utilisation du bulk insert.

    Quelqu'un sait il ou je fais fausse route?
    merci d avance

  2. #2
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    Quelle est la definition de ta table ACHEMINEMENT ?
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Salut
    Ma table achminement a la structure suivante:

    codetiers varchar 8
    rang decimal 5
    codein decimal 5
    codemo decimal 5
    Tra_code varchar 8
    con_code varchar 8
    Lieunote varchar 40
    estpardefaut char1
    date... date
    date... date

    Voila!!!
    merci

  4. #4
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    "000101 " fait 9 caracteres .. d'ou l'erreur.

    Erreur de conversion de données à insérer en bloc (troncature) pour la ligne 1, colonne 1 (CODETIERS).
    Soit tu enleve les " , soit tu agrandi ton champ codetiers

    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Salut et merci pour l'aide.
    AAHH!! oui merci, effectivement c'ete ca!!!!!!
    Je n'avais pas du tout interpretéle message d'erreur dans ce sens.
    Effectivement apres avoir modifié la taille du champ il a passé la colonne avec succés mais a refait la meme erreur ensuite donc j'ai reconfiguré toute ma table et la tout a fonctionné.
    MErci
    Par contre et la j'ai peur d abuser j'ai une autre erreur ensuite:

    mpossible d'insérer en bloc parce que la colonne est trop longue dans le fichier de données. Vérifiez que FieldTerminator et RowTerminator sont correctement spécifiés.

    Alors voila mon bulk insert comporte
    FIELDTERMINATOR = ';',
    ROWTERMINATOR = '/n'

    le message indique une erreur 4866 qui,rapporté dans l'aide indique le message suivant:

    Échec de l'insertion en bloc Colonne trop longue dans le fichier de données pour la ligne %1!, colonne %2!. Assurez-vous que la fin de champ et la fin de ligne sont correctement spécifiées.

    Pourtant mes données sont bien separé par un ;
    et comme il y a plusieurs lignes j'ai indiqué /n pour le passage a la ligne.

    voila, quelqu'un voit-il? est ce que je me trompe enindiquant /n.
    Mais alors comment lui indiquer le passage a la ligne?
    Merci pour tout

  6. #6
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    tu as fait une erreur au niveau du ROWTERMINATOR = '/n' il faut mettre

    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    MERCI beaucoup a toi gandalf le blanc
    c'est effectivement cela.
    bon j'ai d'abord eu vraimment honte lorsque j'ai vu l'erreur, puis j'ai sauté de joie lorsque j'ai essayé!!!!! et que tout a fonctionné.
    Encore merci pour l'aide c'est vraimment tres aimable.

    A+

    P.S j'ai bien fais d'etre fan du sda.!

  8. #8
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    De rien, c'est le but de ce forum de s'entraider !

    et penses a mettre le tag Resolu a ton sujet !


    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

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

Discussions similaires

  1. BULK INSERT : Droits nécessaires pour l'utilisation
    Par JYves dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/11/2005, 10h35
  2. BULK INSERT et format de date
    Par Fragonard dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/08/2005, 08h26
  3. Message d'erreur avec Bulk Insert
    Par Shivas dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 12h03
  4. Comment préciser nom de la colonne pour un Bulk Insert
    Par jeff37 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/06/2004, 17h05
  5. Bulk insert et caractère accentué
    Par slc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/04/2003, 12h52

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