PHP ile elbette yapılabilir, ancak PHP'ye gerek olmadan vbs ile de yapılabilir.
test.vbs
Kod:
SplitNumber = 2 ' satır sayısı
SourceFile = "D:\Projects\Source.txt" ' kaynak dosya
Path = "D:\Projects\" ' hedef dosyaların kaydedileceği dizin
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSourceFile = objFSO.OpenTextFile(SourceFile, 1)
iLoop = 1
FileContent = ""
Do Until objSourceFile.AtEndOfStream
FileContent = FileContent & objSourceFile.Readline
If iLoop Mod SplitNumber = 0 Then
Set objTargetFile = objFSO.CreateTextFile(Path & GenRandomFileName(7) & ".txt")
objTargetFile.Write(FileContent)
FileContent = ""
Set objTargetFile = Nothing
Else
FileContent = FileContent & vbCrLf
End If
iLoop = iLoop + 1
Loop
If FileContent <> "" Then
Set objTargetFile = objFSO.CreateTextFile(Path & GenRandomFileName(7) & ".txt")
objTargetFile.Write(FileContent)
FileContent = ""
Set objTargetFile = Nothing
End If
Set objSourceFile = Nothing
Set objFSO = Nothing
Function GenRandomFileName(x)
return = ""
For I = 1 To x
return = return & Chr(Int((25 * Rnd) + 65))
Next
GenRandomFileName = return
End Function
SplitNumber : dosyaların kaç satırda bir bölünecek
SourceFile : verileri export ettiğiniz kaynak dosya
Path : oluşturulacak dosyaların kaydedileceği dizin
yukarıdaki kodu .vbs olarak kaydedip içerisinde gerekli düzeltmeleri yapıp çalıştırırsanız sanırım istediğiniz sonucu alabilirsiniz.
not: verileri (benim örneğim için source.txt olarak) txt dosyaya export ettiğinizi varsayıyorum.
sonradan farkettim de (hehe, gecenin bu vaktinde ancak aklıma geldi) export etmeden de, veritabanına bağlanan, ordan veriyi çekecek şekilde hazırlanabilir.
Kod:
SplitNumber = 2 ' satır sayısı
Path = "D:\Projects\" ' hedef dosyaların kaydedileceği dizin
iLoop = 1
FileContent = ""
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Conn = CreateObject("ADODB.Connection")
Conn.Open ConnStr
Set Rs = Conn.Execute("Select alan From tablo")
While Not Rs.EOF
FileContent = FileContent & Rs("alan")
If iLoop Mod SplitNumber = 0 Then
Set objTargetFile = objFSO.CreateTextFile(Path & GenRandomFileName(7) & ".txt")
objTargetFile.Write(FileContent)
FileContent = ""
Set objTargetFile = Nothing
Else
FileContent = FileContent & vbCrLf
End If
iLoop = iLoop + 1
Rs.MoveNext
Wend
If FileContent <> "" Then
Set objTargetFile = objFSO.CreateTextFile(Path & GenRandomFileName(7) & ".txt")
objTargetFile.Write(FileContent)
FileContent = ""
Set objTargetFile = Nothing
End If
Set objFSO = Nothing
Function GenRandomFileName(x)
return = ""
For I = 1 To x
return = return & Chr(Int((25 * Rnd) + 65))
Next
GenRandomFileName = return
End Function
SplitNumber : dosyaların kaç satırda bir bölünecek
Path : oluşturulacak dosyaların kaydedileceği dizin
ConnStr : veritabanınıza bağlantı cümlesi
bunun yanı sıra select ifadesini de kendinize göre düzenlemeniz gerekmektedir.