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 :

import fichier txt dans sql server


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut import fichier txt dans sql server
    bonjour,
    voila je suis obliger de monter un petit programme vb pour importer un fichier
    .txt que je collecte d 'une application tierce.
    le fichier txt récupérer est composer de 4 champs séparer par tabulation
    L 125 458 fiche1
    L 125 458 fiche2
    L 125 458 fiche3

    grosse problematique le fichier txt Pése à peux prés 800 mégas

    j arrive a lire le fichier ligne a ligne mais par contre je n arrive pas a l'insérer dans ma base de donnée
    voila mon code :

    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
     
    Dim countligne1 As Integer = 0
                Dim PCLINK_LTableAdapter As New SetTableAdapters.PCLINK_LTableAdapter
                Using file As New IO.FileStream("D:\Lsav.txt", IO.FileMode.Open, IO.FileAccess.Read)
                    'Creating a strem to read the file into text
                    Using stream As New IO.StreamReader(file)
                        'Read the entire file, split it into line arrays by CRLF, and loop through it. 
                        For Each sLine As String In stream.ReadToEnd().Split(Environment.NewLine)
                            'You to use ", as the delimiter to ensure that commas inside a record are ignored. 
                            Dim sDelimiters() As String = {"\t"}
                            'Now split the line into individual records. 
                            Dim sRecords() As String = sLine.Split(sDelimiters, StringSplitOptions.None)
                            countligne1 += 1
                            'Insert them into the database by referencing the individual string in the array, 
                            'but be sure to replace the quotes with an emtpy string; otherwise, you will have quote in the record. 
                            'The third argument, to which I'm passing a 'Nothing', is expecting a picture. 
                            PCLINK_LTableAdapter.Insert(sRecords(0), sRecords(1), sRecords(2), sRecords(3))
                            With listaction.Items
                                .Add(String.Format("lignes : " & sRecords(0)))
                            End With
                        Next
                    End Using
     
                End Using
    le code si dessus ne fonctionne pas mais cest tous ce que j ai trouver sur le net pour inserer un fichier txt dans une base sql
    un petit coup de pouce serait vraiment bienvenu

    ps : j arrive a injecter le fichier text via un ssis de mon sql server 2005
    mais apparament on peux pas lancer les ssis si l ampli n est pas sur le serveur lui meme ?

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    800 Mo c'est violent

    j'imagine que tu connais la structure qui doit etre fixe

    donc je proposerais de lire le fichier ligne par ligne
    => streamreader peut etre, enfin voir dans system.io
    de créer une requete pour chaque ligne (rajoutée dans un stringbuilder)
    puis passer le string de la requete complete à sql server (ou toutes les x lignes)
    => voir ce qui délimite les champs (tailles fixes ? tabulation ? ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    800 Mo c'est violent

    j'imagine que tu connais la structure qui doit etre fixe

    donc je proposerais de lire le fichier ligne par ligne
    => streamreader peut etre, enfin voir dans system.io
    de créer une requete pour chaque ligne (rajoutée dans un stringbuilder)
    puis passer le string de la requete complete à sql server (ou toutes les x lignes)
    => voir ce qui délimite les champs (tailles fixes ? tabulation ? ...)
    oui la base est deja en place et j ai tester l import via ssis sa fonctionne.
    j arrive lire le fichier ligne par ligne mais je ne sais pas commment retourner dans chaque ligne les elements de la premiere colonne 2eme ......
    sachant que les chhamps sont délimités par des tabulation.

    merci

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Dans le cas de SQL Serveur noir aussi l'utilitaire Bulk
    Dans le cas d'Oracle voir SQL Loader.

    Les deux sont prévus pour des volumétries importantes.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 44
    Points
    44
    Par défaut
    bulk j ai deja vu quelque truc parci par la tu na pas de lien bien sympa par hazard ?

    merci

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 14
    Points
    14
    Par défaut
    Utilise la fonction 'split' qui traduit une chaine de caractère en un tableau de chaine de caractère avec chaque élement séparé. Dés lors qu'il on un caractère de séparation (par un espace, un pt virgule etc)

    Un ex sera plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim MyArray As String()
            Dim vstr As String = "03 00 02 A2 01 4A"
            MyArray = vstr.Split(" ")
     
            MsgBox(" le dernier est :" & (MyArray(5)))
            MsgBox(" l'avant dernier est :" & (MyArray(4)))
     
        End Sub

Discussions similaires

  1. Importation fichier txt dans table SQL server
    Par vito30620 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/09/2013, 07h41
  2. importer un fichier CSV dans SQL SERVER 2008
    Par ghir_ana dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/10/2011, 14h30
  3. Importer des fichiers CSV dans SQL Server avec SSIS
    Par nathantahiti dans le forum SSIS
    Réponses: 4
    Dernier message: 02/08/2011, 16h09
  4. importer des fichiers csv dans sql server
    Par nathantahiti dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 22/07/2011, 12h02
  5. Réponses: 6
    Dernier message: 20/04/2011, 12h11

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