我正在尝试从我从项目gutenberg下载的同义词库文本文件中创建一个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中做到这一点文件。
感谢您的帮助!
答案 0 :(得分:1)
您可能不希望表格包含数百列。相反,您可能只需要两列,word
和synonym
。输入文件中的每一行都会生成(可能)表中的多行。
您可以编写一个简单的预处理器(使用您喜欢的脚本语言)将输入文件转换为单词同义词对列表。然后像现在一样加载它。