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

Windows Forms Discussion :

temps insertion fichier texte trop long


Sujet :

Windows Forms

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut
    J'ai essayé une simple requête pour un seul fichier mais ca ne marche toujours pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BULK INSERT dbo.ligne
    FROM 'D:\2009\01\DM.6088.1628.29.12.2008.04.01.2009.txt'
    WITH (FIELDTERMINATOR = '\n', ROWTERMINATOR = ';');
    Script de creation de ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create table ligne
    (
    	codeLigneTransaction int not null primary key identity(1,1),
    	IdMachine varchar(4)  null,
                codeUNI varchar(10)  null, 	
                dateTransaction  varchar(15)  null, 	
                heure varchar(10),
                decision varchar(3)  null,
                codeModePaiement varchar(3)   null, 	
                nbDossiers varchar(2)  null,
    	sommeTransaction varchar(8)  null,	
    )

    Voici les erreurs :


    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 8, colonne 1 (codeLigneTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 9, colonne 1 (codeLigneTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 10, colonne 1 (codeLigneTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 11, colonne 1 (codeLigneTransaction).
    Msg*4865, Niveau*16, État*1, Ligne*1
    Chargement en bloc impossible en raison du dépassement du nombre maximal d'erreurs (10).
    Msg*7399, Niveau*16, État*1, Ligne*1
    Le fournisseur OLE DB 'BULK' du serveur lié '(null)' a rapporté une erreur. Le fournisseur n'a donné aucune information quant à cette erreur.
    Msg*7330, Niveau*16, État*2, Ligne*1
    Impossible d'extraire une ligne du fournisseur OLE DB 'BULK' du serveur lié '(null)'.
    Merci !!

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut
    J'ai modifié mon script de creation de la table mais il y a toujours des erreurs

    script creation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create table ligne
    (
    	IdMachine varchar(4)  null,	
    	dateTransaction  varchar(15)  null, 
    	heure varchar(10) null,
    	decision varchar(3)  null,
    	codeModePaiement varchar(3)   null, 
    	nbDossiers varchar(2)  null,
    	sommeTransaction varchar(8)  null,
    )
    Erreurs :

    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 1, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 2, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 3, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 4, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 5, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 6, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 7, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 8, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 9, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 10, colonne 1 (IdMachine).
    Msg*4863, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (troncation) pour la ligne 11, colonne 1 (IdMachine).
    Msg*4865, Niveau*16, État*1, Ligne*1
    Chargement en bloc impossible en raison du dépassement du nombre maximal d'erreurs (10).
    Msg*7399, Niveau*16, État*1, Ligne*1
    Le fournisseur OLE DB 'BULK' du serveur lié '(null)' a rapporté une erreur. Le fournisseur n'a donné aucune information quant à cette erreur.
    Msg*7330, Niveau*16, État*2, Ligne*1
    Impossible d'extraire une ligne du fournisseur OLE DB 'BULK' du serveur lié '(null)'.

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Ton dernier bloc d'erreur signifie que tes champs sont trop petits par rapport aux données que tu veux insérer.
    On peut voir une ligne du fichier texte?
    Cordialement
    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut
    Bien sur !!

    Voici une ligne

    0002;2008-12-30;00001045;V;FG;2;32.50

  5. #25
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FIELDTERMINATOR = '\n', ROWTERMINATOR = ';'
    avec des notions d'anglais, on aurait tendance à mettre l'inverse déjà ... un champ dans ton fichier texte est terminé par ; pas par un saut de ligne
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut
    Ca marche merci quel con !!

    Une autre question je voudrais faire des operation de mon ficher texte(conversion, concatenation ...) est ce que ca marcherait avec bulk parce que le champ 2 (date )et 3 (heure)de ma ligne je voudrais les concatener pour en faire une date, le champ 1 je voudrais le transformer en entier...

    Est ce que je dois passer par un fichier intermediaire ?

    Merci

  7. #27
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Si tu converti ton champ 1 en entier tu va perdre les 3 premiers 0 donc si ils ne sont pas important, c'est faisable.
    Pour la concaténation des champs 2 et 3, bah euh... je sais pas, ca ne m'étais jamais venu a l'esprit de faire ca
    Cordialement
    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  8. #28
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut
    Je peux le convertir directement ? ou je dois le convertir l'ecrire dans un autre fichier et ensuite utiliser bulk ?

  9. #29
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bah non, change le type de ton champ dans la bdd!
    Cordialement
    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  10. #30
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    je ne suis pas forcément de cet avis
    une date c'est une date pas 2 varchar avec la date et l'heure
    donc soit modifier les fichiers textes
    soit faire un traitement post bulk insert pour recréer les dates
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #31
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Je ne parlais pas de la date mais juste de son champs 1 pour la passer de varchar a int.
    Pour la date, oui c'est peut être mieux de faire le traitement après l'insertion dans la bdd mais comment alors la j'en ai pas la moindre idée!
    Cordialement
    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  12. #32
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    plusieurs possibilité, soit une vue avec un trigger instead of insert qui s'occupe de faire l'insert dans la table en remaniant la date
    soit de mettre dans la table les 2 varchar et la date et un trigger after insert qui créé la date à partir des 2 varchar et met les 2 varchar à null
    un date prend 8 octets
    2 varchars pour la date ca doit prendre pas loin de 20 octets
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #33
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut
    J'essaie de creer un trigger instead of insert, je ne connais pas trop donc soyez indulgent qui me permettra de concatener l'heure et la date.

    Dans mon fichier texte j'ai rassembler l'heure et la date ils ne sont plus separe par un ";" mais par un espace.

    Est ce que ca pourrait marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TRIGGER inser on ligne
    instead of insert
    as 
    begin
    	insert into ligne values(inserted.IdMachine,convert(inserted.dateTransaction,smalldatetime),inserted.decision,inserted.codeModePaiement,inserted.nbDossiers,inserted.sommeTransaction)
    end;
    Erreur :

    Msg*128, Niveau*15, État*1, Procédure*inser, Ligne*5
    Le nom "inserted.IdMachine" n'est pas autorisé dans ce contexte. Les expressions valides sont des constantes, des expressions constantes et (dans certains contextes) des variables. Les noms de colonnes ne sont pas autorisés.

    Cordialement.

  14. #34
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    non
    le premier à priori faut qu'on a sur les triggers c'est qu'inserted est une ligne, hors ca peut en etre plusieurs d'un coup, donc le values n'est pas utilisable

    m'enfin si tu as réuni dans le fichier texte la date et l'heure il n'y a pas besoin de trigger je pense
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #35
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut
    oui je les ai reuni

    avant
    0001;2008-12-29;00001041;V;CB;1;73.10
    apres
    0001;2008-12-29 10:41;V;CB;1;73.10
    mais quand j'essaie de les inserer dans dateTransaction de la table ligneTransaction j'ai des erreurs :

    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 1, colonne 2 (dateTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 2, colonne 2 (dateTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 3, colonne 2 (dateTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 4, colonne 2 (dateTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 5, colonne 2 (dateTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 6, colonne 2 (dateTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 7, colonne 2 (dateTransaction).
    Msg*4864, Niveau*16, État*1, Ligne*1
    Erreur de conversion des données à charger en bloc (incompatibilité de type ou caractère non valide pour la page de codes spécifiée) pour la ligne 8, colonne 2 (dateTransaction).

Discussions similaires

  1. [VB6]Message d'erreur si le temps d'exécution est trop long
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 14/09/2006, 17h43
  2. Réponses: 2
    Dernier message: 29/08/2006, 17h18
  3. textbox et onKeyUp event -> largeur augmente auto quand texte trop long
    Par Miketrix dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/07/2006, 12h14
  4. [FLASH8] Insertion fichier texte et fleches
    Par BrItneY dans le forum Flash
    Réponses: 8
    Dernier message: 27/06/2006, 14h46
  5. Fichier texte trop gros pour etre ouvert
    Par tavman dans le forum C++
    Réponses: 5
    Dernier message: 05/10/2005, 01h07

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