もう1つのオプションは、ファイルをデータベースにロードすることです。EG 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`));
次に、データをインポートします。EGこれにより、すべての単語がテーブルにインポートされます(この手順は完了するまで時間がかかる場合があります。最初に小さな単語ファイルでテストを実行し、形式が大きい方(テーブルを切り捨てます。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
EG最初の行をスキップする必要がある場合は、次の手順を実行します。
LOAD DATA LOCAL INFILE "H:\\words.txt" INTO TABLE tmp.words
-- FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(mywords);
最後に、ソートされたファイルを保存します。これは、PCによっても時間がかかる場合があります。
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
INTO OUTFILE 'C:\\sorted_words.csv';
好きなように自由にデータを検索することもできます。EGこれにより、最初の50ワードが昇順(0番目または最初のワードから始まる)で表示されます。
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
LIMIT 0, 50 ;
頑張って
ピート