1

我正在尝试从我从古腾堡项目中得到的词库文本文件创建一个 mysql 表;但是,我在做这件事时遇到了一些问题。我能够编写以下脚本,该脚本成功地创建了包含信息的表:

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”的列,而不是添加 100 个名为“1、2、3 等”的列。

如果将表作为键值对很容易(每个单词的同义词都有单独的表),我愿意走这条路,但我无法从 txt 文件中弄清楚如何做到这一点。

谢谢您的帮助!

4

1 回答 1

1

您可能不想要一个包含数百列的表。相反,您可能只需要两列,word并且synonym. 输入文件中的每一行都会在表中生成(可能)多行。

您可以编写一个简单的预处理器(使用您最喜欢的脚本语言)将输入文件转换为单词、同义词对的列表。然后像现在一样加载它。

于 2012-08-29T17:51:37.497 回答