Inną opcją jest załadowanie pliku do bazy danych. EG MySQL i MySQL Workbench.
Bazy danych są idealnymi kandydatami do pracy z dużymi plikami
Jeśli plik wejściowy zawiera tylko słowa oddzielone nowym wierszem, nie powinno to być trudne.
Po zainstalowaniu bazy danych i MySQL Workbench musisz to zrobić.
Najpierw utwórz schemat (przy założeniu, że słowa nie będą dłuższe niż 255 znaków, chociaż możesz to zmienić, zwiększając wartość argumentu). Pierwsza kolumna „idwords” jest kluczem podstawowym.
CREATE SCHEMA `tmp` ;
CREATE TABLE `tmp`.`words` (
`idwords` INT NOT NULL AUTO_INCREMENT,
`mywords` VARCHAR(255) NULL,
PRIMARY KEY (`idwords`));
Po drugie, zaimportuj dane: EG Spowoduje to zaimportowanie wszystkich słów do tabeli (wykonanie tego kroku może trochę potrwać. Radzę najpierw uruchomić test z plikiem małych słów, a gdy będziesz pewien, że format jest taki sam jak większy (skróć tabelę. IE Wyczyść go i załaduj pełny zestaw danych).
LOAD DATA LOCAL INFILE "C:\\words.txt" INTO TABLE tmp.words
LINES TERMINATED BY '\r\n'
(mywords);
Ten link może pomóc w dostosowaniu formatu do obciążenia.
https://dev.mysql.com/doc/refman/5.7/en/load-data.html
EG Jeśli chcesz pominąć pierwszą linię, wykonaj następujące czynności.
LOAD DATA LOCAL INFILE "H:\\words.txt" INTO TABLE tmp.words
-- FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(mywords);
Na koniec zapisz posortowany plik. Może to chwilę potrwać, w zależności od komputera.
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
INTO OUTFILE 'C:\\sorted_words.csv';
Możesz również wyszukiwać dane według własnego uznania. EG To da ci pierwsze 50 słów w porządku rosnącym (zaczynając od 0 lub pierwszego słowa).
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
LIMIT 0, 50 ;
Powodzenia
Pete