Ще один варіант - завантажити файл у базу даних. E.G MySQL і MySQL Workbench.
Бази даних - ідеальні кандидати для роботи з великими файлами
Якщо вхідний файл містить лише слова, розділені новим рядком, це не повинно бути занадто жорстким.
Після встановлення бази даних і MySQL Workbench це потрібно зробити.
Спочатку створіть схему (це припускає, що слова не перевищуватимуть 255 символів, хоча ви можете змінити це, збільшивши значення аргументу).
Перший стовпець "idwords" є первинним ключем.
CREATE SCHEMA `tmp` ;
CREATE TABLE `tmp`.`words` (
`idwords` INT NOT NULL AUTO_INCREMENT,
`mywords` VARCHAR(255) NULL,
PRIMARY KEY (`idwords`));
По-друге, імпортуйте дані:
Це дозволить імпортувати всі слова в таблицю (цей крок може зайняти деякий час. Моя порада полягає в тому, щоб спершу запустити тест з файлом невеликих слів і після того, як ви впевнені, що формат такий же, як і більший (скорочення таблицю .. IE Очистіть його і завантажте повний набір даних).
LOAD DATA LOCAL INFILE "C:\\words.txt" INTO TABLE tmp.words
LINES TERMINATED BY '\r\n'
(mywords);
Це посилання може допомогти отримати правильний формат для завантаження. https://dev.mysql.com/doc/refman/5.7/en/load-data.html
E.G Якщо вам потрібно пропустити перший рядок, виконайте наступне.
LOAD DATA LOCAL INFILE "H:\\words.txt" INTO TABLE tmp.words
-- FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(mywords);
Нарешті, збережіть відсортований файл. Це може зайняти деякий час, в залежності від вашого ПК.
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
INTO OUTFILE 'C:\\sorted_words.csv';
Ви також можете шукати дані за власним бажанням.
E.G. Це дасть вам перші 50 слів у порядку зростання (починаючи з 0-го або першого слова).
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
LIMIT 0, 50 ;
Удачі
Піт