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 avec un CSV mal écrit


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 31
    Points
    31
    Par défaut Bulk avec un CSV mal écrit
    Salut
    J'ai un souci d'intégration de données dans ma base SQL-server à partir d'un fichier CSV en utilisant un fichier format et l'instruction bulk. Les fichiers CSV sont fournis par un partenaire et ne sont pas toujours bien écrits, à savoir, il arrive qu'il y ait plus de colonnes que la normale sur une ligne car un point virgule s'est inséré dans un champ.
    Du coup, quand je fais mon bulk, j'ai droit à un message d'erreur : "Les données chaîne ou binaires seront tronquées.
    L'instruction a été arrêtée."
    Est-il possible de gérer les exceptions pour éviter ce problème ou existe-t-il une solution me permettant d'éviter de vérifier la bonne écriture du CSV.
    J'espère avoir été clair.
    Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Essayez d'ajouter l'option -b1
    Toutes les lignes qui seront bonnes passeront, toutes les autres échoueront

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Pour le -b1, je vois pas bien où le mettre.
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    				BULK Insert produit_new FROM '#partenaire.nom_fichier#'
    				WITH (FIRSTROW = 2, FORMATFILE = '#partenaire.fichier_format#')

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 897
    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 : 21 897
    Points : 53 135
    Points
    53 135
    Billets dans le blog
    6
    Par défaut
    -b1 est pour osql si je ne m'abuse.

    A +

  5. #5
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Citation Envoyé par SQLpro
    -b1 est pour osql si je ne m'abuse.

    A +
    non, pour bcp

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    On peut utiliser bcp dans l'interface de Sql-server ?
    Toutes les docs que j'ai trouvé sont en anglais et j'ai compris qu'on peut utiliser bcp via une ligne de commande mais pas j'y arrive dans Sql-server. Est-ce possible ?
    Merci

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pas dans l'interface. C'est soit bcp en ligne de commande, soit en Transact-SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BULK INSERT table FROM datafile WITH options
    Voir BOL

    Par contre, si c'est le CVS qui est mal écrit, et que tu peux identifier le type de défaut, tu peux faire un pré-traitement avec Perl par exemple, les regex adore ce genre de boulot. D'autres langages peuvent être adaptés, mais je ne connais que Perl

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par fadace
    Essayez d'ajouter l'option -b1
    Toutes les lignes qui seront bonnes passeront, toutes les autres échoueront
    Ca marche avec bcp mais je voudrais supprimer toutes les lignes mal écrites via Transact-sql, est ce possible ?
    Merci

Discussions similaires

  1. [HTML 4.0] Code très mal écrit avec plusieurs HTML, HEAD
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/06/2010, 15h20
  2. mettre a jour un .xls automatiquement avec des .csv
    Par geriler dans le forum Excel
    Réponses: 7
    Dernier message: 20/03/2008, 15h04
  3. creation de table avec fichier csv
    Par pseudobidon57 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/09/2007, 14h05
  4. [VBA-E] SQL - ADODB avec fichier CSV
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2007, 14h24
  5. Mettre a jour BD avec fichier csv
    Par Looping94510 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 07/02/2005, 18h56

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