Ja, du kan gøre det i nogle få trin:
Først Opret en midlertidig iscenesættelsestabel (lad os kalde det import
) med én kolonne, der vil indeholde linjer som rækker af kildedatafilen
CREATE TABLE `import` (
`line` varchar(512) DEFAULT NULL
);
og indlæs data fra filen i tabellen
LOAD DATA INFILE '/path/to/your/file.txt'
INTO TABLE import
FIELDS TERMINATED BY '\n'
LINES TERMINATED BY '\n'
Anden Forudsat at du har en måltabel (lad os kalde det words
), der ser sådan ud
CREATE TABLE `words` (
`word` varchar(64) DEFAULT NULL
);
vi kan opdele hver linje i ord og indsætte dem i words
tabel med en forespørgsel
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
BEMÆRK:
- antagelsen er, at dine ord adskilles nøjagtigt med ét mellemrum
- denne forespørgsel vil dele op til 100 ord. Hvis du har brug for mere eller mindre, kan du justere en grænse ved at redigere den indre underforespørgsel, eller hvis du importerer regelmæssigt end at overveje at bruge persisted tally(tal)-tabel i stedet.
Tredje Slip eller afkort (hvis du vil bruge det igen til at importere flere filer) i mellemtabellen
DROP TABLE import;
Her er SQLFiddle demo, der viser trin to.