Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/09/2007, 10h26   #1
Invité de passage
 
Inscription : février 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 12
Points : 3
Points : 3
Par défaut Enregistrer des données dans BDD depuis un fichier TXT

Bonjour,

Je souhaite enregistrer les données contenues dans un fichier txt dans une base de données SQL Server. Le problème est que pour chaque ligne j'ai 11 champs séparés par des points virgules à renseigner. Je debut un peu dans la manipulation de fichier texte et je ne vois pas par quel bout commencer !

Voici un exmple du fichier txt

A;94;TEST;22/08/2007;22/08/2007;02SW44;1.2125;P;1,25;2;0;
A;94;TEST;22/08/2007;22/08/2007;03HA20;0.5375;P;1,25;0;0;
A;94;TEST;22/08/2007;22/08/2007;03HA23;0.6875;P;1,25;0;0;
A;94;TEST;22/08/2007;22/08/2007;04T190;1.175;N;1,25;0;0;

Merci d'avance pour votre aide
hubertc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 10h49   #2
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Si ton fichier est petit (quelque centaine de lignes), le plus simple est de lire les ligne du fichier avec l'objet FileSytemObject, de parser les ligne et de les inserer dans la bdd (ligne à ligne) avec une commande Insert.

Si ton fichier est volumineux, tu as interet à utiliser les fonctionnalité interne du SGBD pour importer ton fichier.

Par exemple en sql server tu peux utiliser BCP ou bulk insert
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 11h28   #3
Invité de passage
 
Inscription : février 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 12
Points : 3
Points : 3
Par défaut Parser des lignes ?

Merci pour ton aide
je cherche comment parser les lignes et je ne sais pas le faire.
Pour l'insertion je pense qu'il n'y aura pas de problème

Merci
hubertc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 11h48   #4
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Citation:
je cherche comment parser les lignes et je ne sais pas le faire.
Alors un petit exemple
Code :
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
35
36
37
38
39
40
41
42
43
 
Option Explicit
Const ForReading =1
Const MY_FILE_DELIMITER = ";"
 
Dim oFso
Dim oFileReader
Dim sFilePath
Dim sLineRead
Dim aLineValues
Dim sQuery
Dim iCpt
Dim oCnn
 
sFilePath = "c:\monfichier.txt"
Set oFso = Server.CreateObject("Scripting.FileSystemObject")
Set oCnn= Server.CreateObject("ADODB.Connection")
' ouverture de la conection
oCnn.open ......
 
' lecture du fichier
Set oFileReader = oFso.OpenTextFile(sFilePath, ForReading) ' ouverture du fichier pour lecture
' pour toutes les lignes du fichier
Do While Not oFileReader.AtEndOfStream 
    sLineRead = oFileReader.ReadLine
    ' ci dessous on parse les valeur dans un  tableau
    aLineValues = split(sLineRead, MY_FILE_DELIMITER)
 
    ' construction de la requête :
    sQuery = ""
    For iCpt=0 To Ubound(aLineValues) 
        sQuery = sQuery & ",'" & aLineValues(iCpt)  & "'"
    Next
    ' supression de la 1ere virgule
    sQuery = mid(sQuery, 2)
    ' on complète la requête
    sQuery = "Insert Into matable (champ1, champ2, ..., champ11) Values(" & sQuery & ")"
    ' execution de la requête
    oCnn.execute sQuery
Loop
oFileReader.close
Set oFileReader = Nothing
Set oFso = Nothing
voili

Mais si ton fichier est volumineux, un bulk insert sera beaucoup plus rapide
__________________
Il n'y a que 2 choses infinies dans le monde :
L'univers et la bétise humaine...
Mais pour l'univers, je n'ai pas de certitude (A.E.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2007, 12h05   #5
Invité de passage
 
Inscription : février 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 12
Points : 3
Points : 3
Par défaut RESOLU

Merci pour tout
hubertc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h59.


 
 
 
 
Partenaires

Hébergement Web