Ya, Anda dapat melakukannya dengan beberapa langkah:
Pertama Buat tabel staging sementara (sebut saja import
) dengan satu kolom yang akan menampung baris sebagai baris dari file data sumber
CREATE TABLE `import` (
`line` varchar(512) DEFAULT NULL
);
dan memuat data dari file ke dalam tabel
LOAD DATA INFILE '/path/to/your/file.txt'
INTO TABLE import
FIELDS TERMINATED BY '\n'
LINES TERMINATED BY '\n'
Kedua Dengan asumsi bahwa Anda memiliki tabel target (sebut saja words
) yang terlihat seperti ini
CREATE TABLE `words` (
`word` varchar(64) DEFAULT NULL
);
kita dapat membagi setiap baris menjadi kata-kata dan memasukkannya ke dalam words
tabel dengan kueri
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
CATATAN:
- asumsinya adalah kata-kata Anda dipisahkan persis dengan satu spasi
- kueri ini akan dibagi hingga 100 kata. Jika Anda membutuhkan lebih atau kurang, Anda dapat menyesuaikan batas dengan mengedit subquery dalam atau jika melakukan impor secara teratur daripada mempertimbangkan untuk menggunakan tabel penghitungan (angka) yang bertahan sebagai gantinya.
Ketiga Jatuhkan atau potong (jika Anda akan menggunakannya lagi untuk mengimpor lebih banyak file) tabel pementasan
DROP TABLE import;
Ini SQLFiddle demo yang menunjukkan langkah kedua.