हाँ, आप इसे कुछ चरणों में कर सकते हैं:
पहले एक अस्थायी स्टेजिंग टेबल बनाएं (इसे import
call कहते हैं) ) एक स्तंभ के साथ जो स्रोत डेटा फ़ाइल की पंक्तियों के रूप में पंक्तियों को धारण करेगा
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'
दूसरा यह मानते हुए कि आपके पास एक लक्ष्य तालिका है (इसे 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
नोट:
- मानना यह है कि आपके शब्द बिल्कुल एक स्थान से अलग हो गए हैं
- यह क्वेरी 100 शब्दों में विभाजित होगी। यदि आपको अधिक या कम की आवश्यकता है तो आप आंतरिक सबक्वायरी को संपादित करके एक सीमा समायोजित कर सकते हैं या यदि नियमित रूप से आयात करते हैं तो इसके बजाय स्थायी मिलान (संख्या) तालिका का उपयोग करने पर विचार करें।
तीसरा स्टेजिंग टेबल को गिराएं या काटें (यदि आप इसे फिर से अधिक फ़ाइलों को आयात करने के लिए उपयोग करेंगे)
DROP TABLE import;
यह रहा SQLFiddle डेमो जो चरण दो दिखाता है।