はい、いくつかの手順で実行できます:
最初 一時的なステージングテーブルを作成します(import
と呼びます) )ソースデータファイルの行として行を保持する1つの列
CREATE TABLE `import` (
`line` varchar(512) DEFAULT NULL
);
ファイルからテーブルにデータをロードします
LOAD DATA INFILE '/path/to/your/file.txt'
INTO TABLE import
FIELDS TERMINATED BY '\n'
LINES TERMINATED BY '\n'
2番目 ターゲットテーブルがあると仮定します(words
と呼びましょう) )これは次のようになります
CREATE TABLE `words` (
`word` varchar(64) DEFAULT NULL
);
各行を単語に分割して、words
に挿入できます。 クエリを含むテーブル
INSERT INTO words (word)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(line, ' ', n.n), ' ', -1) word
FROM import CROSS JOIN
(
SELECT a.N + b.N * 10 + 1 n
FROM
(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
ORDER BY n
) n
WHERE n.n <= 1 + (LENGTH(line) - LENGTH(REPLACE(line, ' ', '')))
ORDER BY n.n
注:
- 単語が1つのスペースで正確に区切られていることを前提としています
- このクエリは最大100語に分割されます。多かれ少なかれ必要な場合は、内部サブクエリを編集して制限を調整できます。または、定期的にインポートする場合は、代わりに永続化された集計(数値)テーブルを使用することを検討してください。
3番目 ステージングテーブルを削除または切り捨てます(さらにファイルをインポートするために再度使用する場合)
DROP TABLE import;
これが