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 + type de données "image"


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut Bulk Insert + type de données "image"
    Bonjour,

    Est-il possible d'ajouter des images dans une colonne type "image" avec un Bulk Insert ?
    Faut-il utiliser le "Format file" ?

    J'ai trouvé ça pour l'instant correspondant au mieux à ce que je recherche, mais ça ne fonctionne pas de mon côté :

    http://support.microsoft.com/kb/197043


    Merci d'avance

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

    Quelle est votre version de SQL Server ?

    Obtenez-vous bien la même erreur que celle qui est donnée par la KB ?

    @++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Bonjour elsuket,

    Version SQL : 10.0.2531.0 - SP1 - Express Edition with Advanced Services

    Requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BULK INSERT dbo.BulkImageTest FROM 'c:\Bulk\Test.jpg'
    Erreur
    Msg*4864, Niveau*16, État*3, Ligne*1
    Erreur de conversion des données à charger en masse (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 1, colonne 1 (BulkImage).
    Ce qui est normal, je lui passe un fichier au lieu d'un type IMAGE


    Et je n'arrive pas à génrer mon formatFile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\>bcp Bulk_Test..BulkImageTest in c:\bulk\Test.jpg -fc:\test.fmt -SBLABLABLA-PP
    \SQLEXPRESS2008 -T
    Erreur
    SQLState = 37000, NativeError = 4060
    Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Impossible d'ouvrir la base de données "Bulk_Test" demandée par la connexion. La connexion a échoué.

    SQLState = 28000, NativeError = 18456
    Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Échec de l'ouverture de session de l'utilisateur*'MONNOM'.
    Quand je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\>bcp Bulk_Test..BulkImageTest in c:\bulk\Test.jpg -fc:\test.fmt -SBLABLABLA-PP
    \SQLEXPRESS2008 -UBLABLABLA
    Il me demande un mot de passe, mais je me connecte à sql server sans mot de passe (dans l'onglet authentification, j'ai "authentification windows")

  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
    Par défaut
    Vous utilisez donc SQL Server 2008, et le type IMAGE est déprécié dès SQL Server 2005.
    Vous devez le remplacer par le type VARBINARY(MAX).
    Si vous avez un nombre important d'images à stocker, peut-être tirerez vous parti de la fonctionnalité FILESTREAM, introduite avec SQL Server 2008.

    Ainsi vous pourrez stocker votre fichier comme je l'ai montré dans ce petit billet où je stocke des icônes

    @++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    Je ne savais pas que le type "image" était déprécié.
    Je te remercie pour cet info, ça m'aide beaucoup

    Cependant, j'aurai une petite question concernant cette partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    -- Chargement du document (chemin c:\)
    SELECT @img = CAST(bulkcolumn AS VARBINARY(MAX))
    FROM OPENROWSET(
    BULK 'C:\image.jpg', SINGLE_BLOB) AS x
    --Insertion des documents dans la table Image jpeg          
    INSERT INTO dbo.Documents (DocID, DocNumber, DocName, DocDescription, DocExtension, Doc)
    VALUES (NEWID(), 'img1','image1','Image Jpeg','.jpg', @img);
    Y a t-il possible de récupérer toutes les images ayant le même type se trouvant dans un dossier ? Par exemple au lieu d'avoir "C:\image.jpg", avoir "C:\DossierDesImages" ?
    Pour éviter d'éxécuter x fois cette procédure s'il y a x fichiers

    Dans tous les cas, merci beaucoup

  6. #6
    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
    Par défaut
    C'est effectivement possible, mais cela se fera en SQL dynamique puisque le dossier doit pouvoir être paramétrable .
    Cela ne me semble pas infaisable mais compliqué, et vous serez de plus obligé d'avoir recours à l'utilisation de la procédure stockée xp_cmdshell ... C'est moche ...

    Il y a quelques temps j'ai fait une petite procédure stockée d'assembly en C# qui permet de faire ce que vous demandez.
    Je pensais en faire un billet, mais je ne peux pas le publier avant ce soir si cela vous intéresse

    @++

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Par défaut
    D'accord,

    Oui cela m'intéresse, pourquoi pas
    Vous pourrez me faire un signe ?

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/03/2010, 17h45
  2. Type de donnée image sous Sql Server Dba
    Par Vanesse dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/05/2004, 11h43

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