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 - la première ligne ne s'insère pas


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par défaut BULK INSERT - la première ligne ne s'insère pas
    Bonjour à tous et merci d'avancement pour le temps que vous accordez à mon problème,

    (je précise avant tout que le problème est simplifié)

    J'ai un fichier texte.CSV qui contient des lignes comme celle ci ->

    1;BLABLA
    2;TRUC
    3;CHOSE

    Je souhaite insérer ces lignes dans une table à deux champs :

    l'un numérique l'autre alfa.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SET QUOTED_IDENTIFIER ON
    GO
     
    CREATE TABLE matable
    (
    	[id] [int] NOT NULL,
    	[texte] [nvarchar](10) NULL,
    	CONSTRAINT [PK] PRIMARY KEY CLUSTERED ([id] ASC)
    ) ON [PRIMARY]

    Pour cela j'utilise BULK INSERT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BULK INSERT matable
    FROM 'c:\texte.csv'
    WITH
    (
    FIELDTERMINATOR = ';',
    ROWTERMINATOR = '\n',
    FIRSTROW = 1
    )
    GO
    Avec l'option FIRSTROW = 2 la première ligne ne s'insère pas (normal) et je n'ai pas d'erreur.

    Avec FIRSTROW = 1 la première ligne ne s'insère pas et j'obtiens l'erreur suivante :

    Msg 4864, Level 16, State 1, Line 2
    Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (id).
    Ma question : comment j'insère la première ligne ?

    Pouvez vous m'aider ?

  2. #2
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par défaut
    Mon problème venait de l'encodage des caractère du fichier.

    En UTF8, ça marche pas !

    Je laisse le post, si ça peut aider un jour.

  3. #3
    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 : 45
    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
    Par défaut
    Bonjour,

    Avez vous essayé avec l'option CODEPAGE = 65001 ?

    @++

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par défaut
    J'ai remis en UTF8 pour tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 2775, Level 16, State 13, Line 2
    The code page 65001 is not supported by the server.

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 199
    Billets dans le blog
    1
    Par défaut
    Problème classique avec l'encodage UTF-8 (on a le même avec le parsing XML) : UTF-8 rajoute une signature de 2 octets en début de fichier, et quand on a une incohérence entre l'encodage du fichier et l'encodage attendu, ça plante tout

  6. #6
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par défaut
    OK,

    Merci pour cette précision.

    J'ai eu quelques précisions sur mon fichier d'entré (il est fourni par mon client arff). Celui-ci est maintenant en ANSI (cool) et se compose de la manière suivante (moins cool) :

    "BLABLA";"UNO"
    "TRUC";"DOS"
    "CHOSE";TRES"

    Vous pouvez remarqué que l'identifiant a disparue et que j'ai maintenant des guillemets entre les caractères.

    J'ai donc appliqué le changement suivant sur ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE matable
    (
    	[id] [int] NOT NULL,
    	[texte1] [nvarchar](10) NULL,
    	[texte2] [nvarchar](10) NULL,
    	CONSTRAINT [PK] PRIMARY KEY CLUSTERED ([id] ASC)
    ) ON [PRIMARY]
    Avec la même commande ça ne passe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg 4864, Level 16, State 1, Line 2
    Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (id).
    x10 l'erreur pour chaque ligne du fichier

    Je recherche actuellement le moyen de faire comprendre a ma commande BULK le nouveau fichier.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/10/2009, 14h53
  2. Pas d'ajout des lignes avec BULK INSERT
    Par beurknbba dans le forum Développement
    Réponses: 2
    Dernier message: 04/09/2009, 10h28
  3. pb d'espace en fin de ligne bulk insert
    Par zer35 dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 21/05/2008, 14h55
  4. BULK INSERT et symbole de retour à la ligne
    Par HULK dans le forum VB.NET
    Réponses: 1
    Dernier message: 20/09/2007, 18h20
  5. Bulk insert ignorant des lignes
    Par elvivo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/09/2006, 03h45

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