1

プロジェクトグーテンベルクから降りたシソーラステキストファイルからmysqlテーブルを作成しようとしています。しかし、私はそれを行うのにいくつかの問題があります。次のスクリプトを記述して、情報を含むテーブルを正常に作成できました。

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

    INTO TABLE thesaurus_entries

    COLUMNS
        TERMINATED BY ','

    LINES

        TERMINATED BY '\r\n'

テキストファイルでは、最初の単語はシソーラスエントリであり、その後にコンマで区切られたすべての同義語が続きます。各エントリは改行で区切られます。

私の問題は、元々、多数の列を持つ1つのテーブルだけを使用するつもりだったのですが、同義語の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 $$

しかし、「1、2、3など」という名前の列を100個追加するのではなく、「a」という名前の列を1つ追加するだけでした。

テーブルをキーと値のペアとして(単語の同義語ごとに別々のテーブルを使用して)作成するのが簡単であれば、私はそのルートを進んで行きますが、txtファイルからそれを行う方法を理解することはできません。

ご協力ありがとうございました!

4

1 に答える 1

1

おそらく、数百の列を持つテーブルは必要ありません。代わりに、おそらく2つの列wordsynonym。入力ファイルの各行は、テーブルに(潜在的に)複数の行を生成します。

単純なプリプロセッサ(お気に入りのスクリプト言語)を記述して、入力ファイルを単語と類義語のペアのリストに変換できます。次に、現在実行しているようにロードします。

于 2012-08-29T17:51:37.497 に答える