2012-08-29 96 views
1

我試圖從同義詞庫文本文件創建一個MySQL表我從項目古騰堡;但是,我遇到了一些問題。我能寫出下面的腳本,它與信息成功地創建一個表:MySQL從txt文件創建表

LOAD DATA LOCAL INFILE 'C:/mthesaur.txt' 

    INTO TABLE thesaurus_entries 

    COLUMNS 
     TERMINATED BY ',' 

    LINES 

     TERMINATED BY '\r\n' 

在文本文件中,第一個字的詞庫項,其後是其所有同義詞用逗號隔開。每個條目由換行符分隔。

我的問題是,我本來打算只使用一個大量列的表,但我無法弄清楚如何輕鬆地爲同義詞製作100多列。我試過這樣做:

DELIMITER $$ 

CREATE PROCEDURE ABC() 

    BEGIN 
     DECLARE a INT Default 0 ; 
     simple_loop: LOOP 
     SET a=a+1; 
     ALTER TABLE `thesaurus`.`thesaurus_entries` ADD COLUMN a 
VARCHAR(60) NULL AFTER `thesaurus_entries_id` ; 
     IF a=100 THEN 
      LEAVE simple_loop; 
     END IF; 
    END LOOP simple_loop; 
END $$ 

但是,所做的只是添加一個名爲「a」的列而不是添加名爲「1,2,3等」的列。

如果很容易將表格作爲關鍵值對(每個單詞的synomyms有單獨的表格),我會願意走這條路線,但我無法弄清楚如何從txt文件。

謝謝你的幫助!

回答

1

你可能不想要一個包含數百列的表格。相反,您可能只需要兩列,即wordsynonym。輸入文件中的每一行都會在表中生成(可能)多行。

您可以編寫一個簡單的預處理程序(使用您最喜歡的腳本語言)將輸入文件轉換爲單詞,同義詞對列表。然後像現在這樣加載它。

+0

這聽起來像一個好主意。不幸的是,我仍然在學習一般的編程,所以當你說「你最喜歡的腳本語言」時,我的思緒一片空白!我知道如何使用基本的Java,Spring,MySQL,JSP,CSS,一個小小的JavaScript,但在簡單的腳本語言方面卻不多。 – CorayThan

+0

然後在Java中執行它。編寫一個讀入一行的程序,將它拆分爲',',然後在第一個元素之後爲每個元素打印第一個元素和該元素。 –

+0

我真的設法做到了!這可能比它需要的複雜得多,但我已經完成了所有的工作。現在我的數據庫中有250萬行的表格。 – CorayThan