Witam wszystkich.
Mój problem polega na podzieleniu pliku na kilka/kilkanaście mniejszych plików, dlaczego ?
Z bazy danych MS SQL przez bulk copy wyrzucam sporą ilość danych do pliku, ok 50 milionów rekordów następnie przerzucam to przez FTP-a na inny komputer i tam robię import do MySQL-a funkcją LOAD DATA INFILE. Problem w tym że danych jest już tak dużo ze ta funkcja już sobie nie radzi. Podejrzewam że on czytając plik do importu tworzy dla każdego rekordu zapytanie SQL wiec zaczyna mu szybko brakować pamięci więc wykorzystuje do tego plik wymiany przez co trwa to strasznie długo.
Pomyślałem że podzielę ten plik za pomocą PHP, lecz niestety plik jest za duży aby zaalokować tyle pamięci (ustawiłem w php.ini 2GB i było mało). Jedyny sposób jaki widzę to wykorzystać do tego BASH aby to on podzielił plik na kilka mniejszych, problem w tym ze z BASHem niewiele miałem do czynienia więc prośba do kolegów z forum o pomoc.
Aktualnie plik ma ok 550MB (ok 50milionów rekordów) i są w nim dane zapisane w takiej postaci:
3602 23966 48.0000 B 3
3604 23966 48.0000 B 3
3632 23966 48.0000 B 2
3622 23666 48.0000 B 3
3605 23366 48.0000 B 1
3607 23965 48.0000 B 3
3612 23956 48.0000 B 3
Dla osoby która BASHem włada jak językiem ojczystym to 5 min roboty.
Chodzi mi o to aby podzielić plik na kilka/kilkanaście w którym będzie powiedzmy 1 milion rekordów, plik wtedy będzie miał ok 25MB i funkcja LOAD DATA INFILE sobie z tym poradzi bez problemu.
W PHP bym sobie to zrobił ale bash-a niestety nie znam.
Z góry dziękuję za cenne wskazówki.