Pour lire un fichier texte avec séparateur de colonnes (fichier de 100 000
lignes environ), j'ai testé 2 méthodes :
1ère méthode avec :
Dim s As String
Open Tfile For Input As #1
Do While Not EOF(1)
Input #1, s
' Traitement ...
Loop
Close #1
2ème méthode avec le FSO :
Dim s As String
Dim fso As Object, f As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Tfile, 1) ' reading mode
Do While Not f.AtEndOfStream
' Lecture ligne dans Tfile
s = f.ReadLine
' Traitement...
Loop
f.Close
La Ière méthode détecte un retour de ligne dans mon fichier texte qui
n'apparait pas avec la 2ème méthode et n'est pas visible avec un éditeur
hexa genre UltraEdit.
Pourtant, mon fichier texte d'origine "Business Objects" semble bien avoir
un problème de formatage (encodage ASCII ou UTF truc ?) quand on l'importe
dans une base de données avec une commande SQL = "SELECT * INTO [" & Ttable
& "] FROM [Text;Database=" & Tpath & ";HDR=YES;FMT=Delimited].[" & Tfile &
"]"
Celà me crée une seule colonne avec toutes les valeurs dedans.
Avez-vous remarqué des comportements différents avec ces 2 méthodes de
lecture de fichier texte ?
Enfin, contrairement à ce que l'on dit souvent, j'ai trouvé FSO très rapide
sous XP PRO SP2.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-marc
teddy wrote:
Bonjour,
Pour lire un fichier texte avec séparateur de colonnes (fichier de 100 000 lignes environ), j'ai testé 2 méthodes :
1ère méthode avec :
Dim s As String Open Tfile For Input As #1 Do While Not EOF(1) Input #1, s ' Traitement ... Loop Close #1
2ème méthode avec le FSO :
Dim s As String Dim fso As Object, f As Object Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(Tfile, 1) ' reading mode Do While Not f.AtEndOfStream ' Lecture ligne dans Tfile s = f.ReadLine ' Traitement... Loop f.Close
La Ière méthode détecte un retour de ligne dans mon fichier texte qui n'apparait pas avec la 2ème méthode et n'est pas visible avec un éditeur hexa genre UltraEdit. Pourtant, mon fichier texte d'origine "Business Objects" semble bien avoir un problème de formatage (encodage ASCII ou UTF truc ?) quand on l'importe dans une base de données avec une commande SQL = "SELECT * INTO [" & Ttable & "] FROM [Text;Database=" & Tpath & ";HDR=YES;FMTÞlimited].[" & Tfile & "]" Celà me crée une seule colonne avec toutes les valeurs dedans.
Avez-vous remarqué des comportements différents avec ces 2 méthodes de lecture de fichier texte ? Enfin, contrairement à ce que l'on dit souvent, j'ai trouvé FSO très rapide sous XP PRO SP2.
Hello,
Tu trouveras dans la FAQ un article consacré au sujet de la lecture rapide de fichiers texte: http://faq.vb.free.fr/index.php?question5
qq remarques sur ton code:
Il faut écrire: Line Input #f, s au lieu de Input #f,s
D'autre part il faut écrire :
Dim f as Integer
f = Freefile Open fichier For Input As #f etc.
La méthode exposée dans la FAQ est très très rapide, incomparablement plus rapide que la méthode FSO.
Pour lire un fichier texte avec séparateur de colonnes (fichier de
100 000 lignes environ), j'ai testé 2 méthodes :
1ère méthode avec :
Dim s As String
Open Tfile For Input As #1
Do While Not EOF(1)
Input #1, s
' Traitement ...
Loop
Close #1
2ème méthode avec le FSO :
Dim s As String
Dim fso As Object, f As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Tfile, 1) ' reading mode
Do While Not f.AtEndOfStream
' Lecture ligne dans Tfile
s = f.ReadLine
' Traitement...
Loop
f.Close
La Ière méthode détecte un retour de ligne dans mon fichier texte qui
n'apparait pas avec la 2ème méthode et n'est pas visible avec un
éditeur hexa genre UltraEdit.
Pourtant, mon fichier texte d'origine "Business Objects" semble bien
avoir un problème de formatage (encodage ASCII ou UTF truc ?) quand
on l'importe dans une base de données avec une commande SQL = "SELECT
* INTO [" & Ttable & "] FROM [Text;Database=" & Tpath &
";HDR=YES;FMTÞlimited].[" & Tfile & "]"
Celà me crée une seule colonne avec toutes les valeurs dedans.
Avez-vous remarqué des comportements différents avec ces 2 méthodes
de lecture de fichier texte ?
Enfin, contrairement à ce que l'on dit souvent, j'ai trouvé FSO très
rapide sous XP PRO SP2.
Hello,
Tu trouveras dans la FAQ un article consacré au sujet de la
lecture rapide de fichiers texte:
http://faq.vb.free.fr/index.php?question5
qq remarques sur ton code:
Il faut écrire:
Line Input #f, s au lieu de Input #f,s
D'autre part il faut écrire :
Dim f as Integer
f = Freefile
Open fichier For Input As #f
etc.
La méthode exposée dans la FAQ est très très rapide, incomparablement
plus rapide que la méthode FSO.
Pour lire un fichier texte avec séparateur de colonnes (fichier de 100 000 lignes environ), j'ai testé 2 méthodes :
1ère méthode avec :
Dim s As String Open Tfile For Input As #1 Do While Not EOF(1) Input #1, s ' Traitement ... Loop Close #1
2ème méthode avec le FSO :
Dim s As String Dim fso As Object, f As Object Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(Tfile, 1) ' reading mode Do While Not f.AtEndOfStream ' Lecture ligne dans Tfile s = f.ReadLine ' Traitement... Loop f.Close
La Ière méthode détecte un retour de ligne dans mon fichier texte qui n'apparait pas avec la 2ème méthode et n'est pas visible avec un éditeur hexa genre UltraEdit. Pourtant, mon fichier texte d'origine "Business Objects" semble bien avoir un problème de formatage (encodage ASCII ou UTF truc ?) quand on l'importe dans une base de données avec une commande SQL = "SELECT * INTO [" & Ttable & "] FROM [Text;Database=" & Tpath & ";HDR=YES;FMTÞlimited].[" & Tfile & "]" Celà me crée une seule colonne avec toutes les valeurs dedans.
Avez-vous remarqué des comportements différents avec ces 2 méthodes de lecture de fichier texte ? Enfin, contrairement à ce que l'on dit souvent, j'ai trouvé FSO très rapide sous XP PRO SP2.
Hello,
Tu trouveras dans la FAQ un article consacré au sujet de la lecture rapide de fichiers texte: http://faq.vb.free.fr/index.php?question5
qq remarques sur ton code:
Il faut écrire: Line Input #f, s au lieu de Input #f,s
D'autre part il faut écrire :
Dim f as Integer
f = Freefile Open fichier For Input As #f etc.
La méthode exposée dans la FAQ est très très rapide, incomparablement plus rapide que la méthode FSO.
OK, je vais voir cette méthode rapide ! Pour ma part, je lis (et copie dans une table SQL Server) un fichier CSV de 77000 lignes avec 10 Colonnes de 50 caractères environ en une vingtaine de secondes via FSO, je trouvais donc FSO + rapide qu'on ne le dit sur les forums. Merci encore.
"Jean-marc" a écrit dans le message de news: 4727a529$0$29260$
teddy wrote:
Bonjour,
Pour lire un fichier texte avec séparateur de colonnes (fichier de 100 000 lignes environ), j'ai testé 2 méthodes :
1ère méthode avec :
Dim s As String Open Tfile For Input As #1 Do While Not EOF(1) Input #1, s ' Traitement ... Loop Close #1
2ème méthode avec le FSO :
Dim s As String Dim fso As Object, f As Object Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(Tfile, 1) ' reading mode Do While Not f.AtEndOfStream ' Lecture ligne dans Tfile s = f.ReadLine ' Traitement... Loop f.Close
La Ière méthode détecte un retour de ligne dans mon fichier texte qui n'apparait pas avec la 2ème méthode et n'est pas visible avec un éditeur hexa genre UltraEdit. Pourtant, mon fichier texte d'origine "Business Objects" semble bien avoir un problème de formatage (encodage ASCII ou UTF truc ?) quand on l'importe dans une base de données avec une commande SQL = "SELECT * INTO [" & Ttable & "] FROM [Text;Database=" & Tpath & ";HDR=YES;FMTÞlimited].[" & Tfile & "]" Celà me crée une seule colonne avec toutes les valeurs dedans.
Avez-vous remarqué des comportements différents avec ces 2 méthodes de lecture de fichier texte ? Enfin, contrairement à ce que l'on dit souvent, j'ai trouvé FSO très rapide sous XP PRO SP2.
Hello,
Tu trouveras dans la FAQ un article consacré au sujet de la lecture rapide de fichiers texte: http://faq.vb.free.fr/index.php?question5
qq remarques sur ton code:
Il faut écrire: Line Input #f, s au lieu de Input #f,s
D'autre part il faut écrire :
Dim f as Integer
f = Freefile Open fichier For Input As #f etc.
La méthode exposée dans la FAQ est très très rapide, incomparablement plus rapide que la méthode FSO.
OK, je vais voir cette méthode rapide !
Pour ma part, je lis (et copie dans une table SQL Server) un fichier CSV de
77000 lignes avec 10 Colonnes de 50 caractères environ en une vingtaine de
secondes via FSO, je trouvais donc FSO + rapide qu'on ne le dit sur les
forums.
Merci encore.
"Jean-marc" <NO_SPAM_jean_marc_n2@yahoo.fr.invalid> a écrit dans le message
de news: 4727a529$0$29260$ba620e4c@news.skynet.be...
teddy wrote:
Bonjour,
Pour lire un fichier texte avec séparateur de colonnes (fichier de
100 000 lignes environ), j'ai testé 2 méthodes :
1ère méthode avec :
Dim s As String
Open Tfile For Input As #1
Do While Not EOF(1)
Input #1, s
' Traitement ...
Loop
Close #1
2ème méthode avec le FSO :
Dim s As String
Dim fso As Object, f As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Tfile, 1) ' reading mode
Do While Not f.AtEndOfStream
' Lecture ligne dans Tfile
s = f.ReadLine
' Traitement...
Loop
f.Close
La Ière méthode détecte un retour de ligne dans mon fichier texte qui
n'apparait pas avec la 2ème méthode et n'est pas visible avec un
éditeur hexa genre UltraEdit.
Pourtant, mon fichier texte d'origine "Business Objects" semble bien
avoir un problème de formatage (encodage ASCII ou UTF truc ?) quand
on l'importe dans une base de données avec une commande SQL = "SELECT
* INTO [" & Ttable & "] FROM [Text;Database=" & Tpath &
";HDR=YES;FMTÞlimited].[" & Tfile & "]"
Celà me crée une seule colonne avec toutes les valeurs dedans.
Avez-vous remarqué des comportements différents avec ces 2 méthodes
de lecture de fichier texte ?
Enfin, contrairement à ce que l'on dit souvent, j'ai trouvé FSO très
rapide sous XP PRO SP2.
Hello,
Tu trouveras dans la FAQ un article consacré au sujet de la
lecture rapide de fichiers texte:
http://faq.vb.free.fr/index.php?question5
qq remarques sur ton code:
Il faut écrire:
Line Input #f, s au lieu de Input #f,s
D'autre part il faut écrire :
Dim f as Integer
f = Freefile
Open fichier For Input As #f
etc.
La méthode exposée dans la FAQ est très très rapide, incomparablement
plus rapide que la méthode FSO.
OK, je vais voir cette méthode rapide ! Pour ma part, je lis (et copie dans une table SQL Server) un fichier CSV de 77000 lignes avec 10 Colonnes de 50 caractères environ en une vingtaine de secondes via FSO, je trouvais donc FSO + rapide qu'on ne le dit sur les forums. Merci encore.
"Jean-marc" a écrit dans le message de news: 4727a529$0$29260$
teddy wrote:
Bonjour,
Pour lire un fichier texte avec séparateur de colonnes (fichier de 100 000 lignes environ), j'ai testé 2 méthodes :
1ère méthode avec :
Dim s As String Open Tfile For Input As #1 Do While Not EOF(1) Input #1, s ' Traitement ... Loop Close #1
2ème méthode avec le FSO :
Dim s As String Dim fso As Object, f As Object Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(Tfile, 1) ' reading mode Do While Not f.AtEndOfStream ' Lecture ligne dans Tfile s = f.ReadLine ' Traitement... Loop f.Close
La Ière méthode détecte un retour de ligne dans mon fichier texte qui n'apparait pas avec la 2ème méthode et n'est pas visible avec un éditeur hexa genre UltraEdit. Pourtant, mon fichier texte d'origine "Business Objects" semble bien avoir un problème de formatage (encodage ASCII ou UTF truc ?) quand on l'importe dans une base de données avec une commande SQL = "SELECT * INTO [" & Ttable & "] FROM [Text;Database=" & Tpath & ";HDR=YES;FMTÞlimited].[" & Tfile & "]" Celà me crée une seule colonne avec toutes les valeurs dedans.
Avez-vous remarqué des comportements différents avec ces 2 méthodes de lecture de fichier texte ? Enfin, contrairement à ce que l'on dit souvent, j'ai trouvé FSO très rapide sous XP PRO SP2.
Hello,
Tu trouveras dans la FAQ un article consacré au sujet de la lecture rapide de fichiers texte: http://faq.vb.free.fr/index.php?question5
qq remarques sur ton code:
Il faut écrire: Line Input #f, s au lieu de Input #f,s
D'autre part il faut écrire :
Dim f as Integer
f = Freefile Open fichier For Input As #f etc.
La méthode exposée dans la FAQ est très très rapide, incomparablement plus rapide que la méthode FSO.