Comparer lignes database SQL avec lignes fichiers txt
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:
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.