Gå til innhold

Program for å splitte tekstfiler ved linjeskift


qdos

Anbefalte innlegg

Skrevet

Har en tekstfil på over 2GB, og som skal importeres i en SQL-base ved bruk av Access. Ettersom Access har en maksimal databasestørrelse på 2GB, får jeg ikke en gang startet denne importen.

 

Trenger derfor et program som splitter filen i mindre deler, men slutter/begynner ved et gitt antall linjer. Det finnes fullt av programmer som gjør dette ved å splitte på filstørrelse, men jeg finner ingen som gjør dette på linjer. De få av programmene som hevder å gjøre dette, viser seg å ikke fungere når alt kommer til alt.

 

Er det noen som vet om programmer, eller metoder, som virker på så store filer?

Videoannonse
Annonse
Skrevet

Lage en rutine selv?

- Les inn kilden linje for linje, skriv lest linje til ny fil, lukk og start ny fil etter n- skrevne linjer.

 

Sub TextSplitter()

Dim fsIN, fsOut As IO.FileStream
Dim sr As IO.StreamReader
Dim sw As IO.StreamWriter
Dim OutCount As Integer

fsIN = New IO.FileStream( _
"infile.txt", IO.FileMode.Open, IO.FileAccess.Read _
)

sr = New IO.StreamReader(fsIN, System.Text.Encoding.Default)

Do
Dim Line As String
Dim LineCount As Integer

Line = sr.ReadLine()
If Line Is Nothing Then Exit Do

If fsOut Is Nothing Then
OutCount += 1

fsOut = New IO.FileStream( _
"outfile" & OutCount & ".txt", _
IO.FileMode.CreateNew, IO.FileAccess.Write _
)

sw = New IO.StreamWriter(fsOut, System.Text.Encoding.Default)
LineCount = 0
End If

sw.WriteLine(Line)
LineCount += 1

If LineCount = 20000 Then
sw.Close()
fsOut = Nothing
End If
Loop

If fsOut IsNot Nothing Then
sw.Close()
End If

fsIN.Close()

End Sub

http://www.thescripts.com/forum/thread605945.html

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...