Bonjour,

Je dispose d'une database *.SQL de 600 Mo en seul morceau et d'une base au format *.txt de taille moyenne 10Mo

Mon but rechercher la présence d'un mot clef "details:" en début de chaque ligne et comparer le contenu qui suit dans la ligne entre les deux fichiers, les compter et les transcrire dans un troisième fichier resultat.txt.
Dans le fichier SQL il y a 600000 mot clef "details:". Dans le fichier txt 1000.

Il me semble clair qu'il faille lire les datas ligne par ligne pour par exploser la mémoire (pourtant de 4Go). Ce programme sera utilisé dans des configs plus légères. J'ai vu quelques idées sur la toile, je vais gratter dans ce sens.

Je ne fait que lire dans la database SQL, je n'y écrit pas.

J'ai par ailleurs 'explosé' cette base SQL en dix fichiers txt avec NotePad de win 10 sans problème. Est-ce une autre solution de comparaison plus simple ?

Par exemple le code suivant ouvre un fichier de 50 Mo sans problème mais pas 600 Mo

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
 
Public Class Form1
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim choisir As New OpenFileDialog
        If choisir.ShowDialog() = 1 Then
            TextBox1.Text = choisir.FileName
        End If
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
 
        If IO.File.Exists(TextBox1.Text) Then
            TextBox1.Text = IO.File.ReadAllText(TextBox1.Text)
        Else
            MessageBox.Show("Le fichier n'existe pas")
        End If
    End Sub
 
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        End
    End Sub
End Class
Il y aura un message d'erreur de mémoire avec un fichier de 600Mo !

Le problème est que cette base SQL vit et s'agrandit de jour en jour il me faudra donc périodiquement (1x par trimestre) faire des comparaisons. Donc exploser la data en 10 fichiers txt n'est probablement pas la bonne solution (2 heures). Quoique !

Pouvez-vous me donner des conseils pour bien démarrer ? Merci d'avance.