2

次の形式でアルファベット順にソートされた用語の長いリスト(約800)を含むテキストファイルがあります。

単語
言葉
剣
..。

このファイルを使用して、各用語がフィールドであり、すべてプロパティVARCHAR(5)を持つ新しいMySQLテーブルを作成したいと思います。

このファイルはコンテンツ分析のスクリプトでも使用するため、フィールドがファイルに表示される順序で挿入されていると最適です。データを挿入するときに(アルファベット順の)順序が維持されていると、より簡単になります。この新しいテーブル。

好奇心旺盛な方のために、私は科学史の中で内容分析を含む論文プロジェクトを行っている学生です。フィールドは、頻度データを保持するために使用されます。主キーになり、これらのフィールドを他のデータにリンクする別のフィールドがあります。私はプログラマーではありませんが、Linuxの実行に10年の経験があり、通常は物事を理解することができます。しかし、Googleはここで私を失敗させました。

編集

そこで、Damovisoは、私が本当に行う必要があるのは、ファイルをmySQLコマンドに変換することであると指摘しました。私はawkとuniqを使用して以下を生成しました:

CREATE TABLE keyterms_frq (
    filename VARCHAR(20),
    apperception VARCHAR(5),
    behaviorism VARCHAR(5),
    behavioristic VARCHAR(5),
    behaviorists VARCHAR(5),
    behaviorist VARCHAR(5),
    behavior VARCHAR(5),
    behaviour VARCHAR(5),
    brain VARCHAR(5),
    conditioned VARCHAR(5),
    conditioning VARCHAR(5),
    condition VARCHAR(5),
    consciousness VARCHAR(5),
    conscious VARCHAR(5),
    experienced VARCHAR(5),
    experiences VARCHAR(5),
    experience VARCHAR(5),
    intellect VARCHAR(5),
    introspections VARCHAR(5),
    introspection VARCHAR(5),
    introspectively VARCHAR(5),
    introspective VARCHAR(5),
    intuition VARCHAR(5),
    memoryimage VARCHAR(5),
    memory VARCHAR(5),
    mentality VARCHAR(5),
    mentally VARCHAR(5),
    mental VARCHAR(5),
    mind VARCHAR(5),
    mirrorscript VARCHAR(5),
    mirrorwriting VARCHAR(5),
    unconditioned VARCHAR(5)
);  

残念ながら、次のように生成されるため、まだ機能していません。

エラー1064(42000):SQL構文にエラーがあります。1行目の「conditionVARCHAR(5)、consciousness VARCHAR(5)、conscious VARCHAR(5)、experience」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

当初、生成できるフィールドの数には制限があると思っていましたが、それは問題ではないようです。

4

5 に答える 5

2

個人的には (これはおそらく人気がないことはわかっています)、一度限りのデータベースの挿入やこのようなテーブルの作成には、Excel と Textpad や Notepad++ (または通常の Notepad) などを使用する傾向があります。

テキスト ファイルをインポートして、各単語を新しい行に配置し、必要に応じて並べ替え、上下に列と行を挿入して SQL コマンドを作成します。

この場合、次のことをお勧めします。

  1. セル A1 に次の内容を含む行を先頭に挿入します:
    CREATE TABLE MyTable (Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  2. 単語の隣にある列 B の各セルに、次の内容を入力します。
    VARCHAR(5),
  3. 最後のコンマを削除し、);下のセルに " " を入力してください。
  4. タブ区切りファイルとして保存し、選択したテキスト エディターを使用して、タブをスペースに置き換えます。

データベースに対して実行できる SQL ファイルが残ります。

はい、面倒であまり 1337 ではありませんが、効果的です。

于 2009-03-13T05:10:34.100 に答える
2

ちょっとフランク、私はあなたのFacebookページにこれを書きましたが、ここに再びあります:

「条件」は MySQL の予約語であるため、この単語を使用して列に名前を付けることはできません。ここのリストを確認してください (少なくとも MySQL 5.1 の場合):

http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

于 2009-03-13T21:12:35.443 に答える
1

したがって、基本的にあなたが求めていると思うのはこれです:ファイルをプログラムに読み込みます。
プログラムに各行を取得させ、すべての単語をリストする文字列を生成させます。
CREATE TABLE ステートメントをフィールド名を保持する文字列と連結して、SQL ステートメントを作成します。
その SQL コマンドを SQL サーバーに送信します。
私はまだこのアイデアの良い実装を提供するには新しすぎますが、これがあなたが探しているものと一致する場合は、誰かにアイデアを提供します.

于 2009-03-13T05:09:23.980 に答える
0

あなたの質問が何であるかを完全に理解しているかどうかはわかりませんが、考えがあります:

頻度データを計算する場合は、単語がテーブルに挿入される前に並べ替えられていれば、より効率的なコンテンツ分析アルゴリズムを作成できます。これにより、データベース サーバーの CPU 負荷が軽減され、周波​​数計算機もより効率的になります。

あなたの質問について少し詳しく説明していただけませんか?

于 2009-03-13T04:23:28.177 に答える
0

これが機能する方法は、「load data infile」を使用してファイルをデータベースにロードすることです。x を前に付けたすべての変数を置き換えます

mysql -uxuser -pxpass xdatabase -e "LOAD DATA INFILE '/tmp/xwordlist.cvs' INTO TABLE xtable FIELDS TERMINATED BY ',' (xcolname)"
于 2010-12-02T20:38:54.833 に答える