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

JDBC Java Discussion :

Erreur sur BULK INSERT


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de tus01
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 191
    Par défaut Erreur sur BULK INSERT
    Bonjour,

    Je rencontre une erreur lors de la requête BULK INSERT depuis mon programme Java:
    Cannot bulk load because the file "//xxx.xxx.xxx.xxx/partage/Fichiers plats/00001-Lamb/012010/ARTICLES_clean.txt" could not be opened. Operating system error code 5(Access is denied.).
    Le fichier txt que j'essaye d'insérer via cette commande se situe sur un autre serveur que celui de la base de données. Le user qui se connecte à la DB a bien le rôle BULK ADMIN. Or il semble qu'un problème de droit subsiste. S'agit-il d'un problème de configuration système ?

    De plus, une autre erreur se produit lorsque j'essaye d'exécuter la commande directement depuis le SERVER MS SQL:
    Msg 4866, Level 16, State 8, Line 1
    The bulk load failed. The column is too long in the data file for row 1, column 33. Verify that the field terminator and row terminator are specified correctly.
    Msg 7301, Level 16, State 2, Line 1
    Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".
    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BULK INSERT dbo.RE_ARTICLE_ADH FROM '\\xxx.xxx.xxx.xxx\partage\Fichiers plats\00001-Lam\012010\ARTICLE_clean.txt' WITH (FIRSTROW = 2, FIELDTERMINATOR = ';', ROWTERMINATOR = '\r\n')
    Concernant ma table, voici les champs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
      [ID_DATE] int NOT NULL,
      [ANNEE] int NOT NULL,
      [MOIS] int NOT NULL,
      [ID_ADHERENT] int NOT NULL,
      [LIB_ADHERENT] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NOT NULL,
      [ID_ENTREPOT] int NOT NULL,
      [LIB_ENTREPOT] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [ID_FICHIER] int NOT NULL,
      [CODE_ARTICLE_ADH] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NOT NULL,
      [LIB_ARTICLE_PRINCIPAL_ADH] varchar(100) COLLATE SQL_Latin1_General_CP437_BIN2 NOT NULL,
      [LIB_ARTICLE_SECONDAIRE_ADH1] varchar(100) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [CONDITIONNEMENT] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [CONTENANCE] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [CONTENANT] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [ID_STATUT] int NULL,
      [LIB_STATUT] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [ID_ARTICLE_C10] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [TYPE_CONDITIONNEMENT] varchar(250) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [DEGRE] varchar(10) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [ID_ANOMALIE] int NULL,
      [LIB_ANOMALIE] varchar(100) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [VAL_ANOMALIE] varchar(250) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [ID_SCORING_ART] int NULL,
      [NB_COL_PARS_ARTICLE] int NULL,
      [NB_LIGNE_SCORE_ARTICLE] int NULL,
      [SOURCE] varchar(50) COLLATE SQL_Latin1_General_CP437_BIN2 NULL,
      [DATE_CREA] date NOT NULL,
      [NB_MAJ] int NULL,
      [DATE_MAJ_NW] date NULL,
      [ID_EXEC] int NULL,
      [ID_DF] int NULL,
      [ID_JOB] int NULL,
      [DATE_MAJ_DQM] date NULL
    Voici un extrait du contenu de mon fichier:
    20110103;2011;01;123456;'Lamb';654321;'Entrepot1';1;20;'AST 24x25cl 5.0ø';;'24';'.25';;;;;;;;;;;;;'PF';;;;;;;
    Avec en fin de ligne un \n. Ce fichier est créé grâce à mon programme Java. J'extrait des données brutes d'un fichier plat, et je recréé un nouveau fichier en ordonnant les données pour l'intégration dans la DB. Mais rien ne passe...

    Merci par avance pour votre aide,

    Thibault

  2. #2
    Membre confirmé Avatar de tus01
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 191
    Par défaut
    Finalement je suis passé par la méthode d'exécution de batch au lieu de passer par un fichier BULK étant donné que je n'ai que 10000 lignes maxi à insérer en base. Les temps de réponse sont plutôt satisfaisants, 20 secondes pour 2800 lignes insérées alors qu'avec une série de 2800 INSERT, ça me prenait 2 minutes !! Du coup, je n'ai pas besoin de créer de fichier CSV temporaire pour insérer mes données en base.

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

Discussions similaires

  1. [MySQL] Erreur sur requête INSERT
    Par obito dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 17/07/2008, 17h28
  2. [SQL] erreur sur requête insert
    Par temperature dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/01/2008, 15h27
  3. message d'erreur sur requete INSERT
    Par captainamerica75 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/05/2007, 13h21
  4. erreur sur l'insertion des commentaires dans excel
    Par fulgaro dans le forum Excel
    Réponses: 1
    Dernier message: 19/02/2007, 08h09
  5. Message d'erreur avec Bulk Insert
    Par Shivas dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 12h03

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