2009-03-13 4 views
1

に用語のリストからMySQLのテーブルを作成します。私は用語の長いリスト(約800)を持つテキストファイル形式でアルファベット順にソートしたテキストファイル

 
aword 
bword 
cword 
... 

を私はこれを使用したいですファイルを使用して、各用語がフィールドである新しいMySQLテーブルを作成し、すべてVARCHAR(5)プロパティを使用します。

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

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

はEDIT

のでDamovisoは、私が実際に行うために必要なものをmysqlコマンドにファイルを入れたことを指摘しました。私は、次の生成にはawkとuniqの使用:

ERROR 1064(42000):あなたは、あなたのSQL構文でエラーが発生していることは、以下の生成として、残念ながらまだ働いていない

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) 
); 

;行で1

私が最初に思ったの近くに「VARCHAR(5)、意識VARCHAR(5)、意識のVARCHAR(5)、経験が条件」を使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してくださいそこに私が生成する可能性がどのように多くの分野には限界があったが、それは私が、私は完全にあなたの質問が何であるかを理解することがわからないんだけど、私は考えを持っている問題

答えて

1

個人的には(これはおそらくあまり一般的ではないことは分かっていますが)私はExcelやTextpadやNotepad ++(またはバニラのメモ帳)などの使い捨てのデータベース挿入やテーブル作成のために使う傾向があります。

各行を新しい行に入れて、必要に応じて並べ替え、上下に列と行を挿入してSQLコマンドを構築するように、テキストファイルをインポートします。この場合

、私がお勧めしたい:

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

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

はい、それは面倒で、それほど難しくありませんが、効果的です。

+0

これは有望ですね。それから、mySQLバッチとして実行しますか? – fdsayre

+0

確かに、出力はその中にSQL create tableコマンドを持つテキストファイルでなければなりません。私はあなたがMySqlにアクセスするためにどのUIを使用しているのかよく分かりませんが、バッチとして実行しています。 さらに助けが必要な場合は教えてください! – Damovisa

+0

私の元の問題を解決する正しい方向に私を指摘してくれてありがとう。 awkを使用して元のデータにmySQL要素を追加し、列を移動してしまいました。 – fdsayre

0

ではないようです。

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

多分あなたの質問で私たちのために少し詳しく説明できますか?

+0

私はそれを再編集しました。うまくいけばもう少し明確になりました。単語がアルファベット順にソートされます。おかげさまで – fdsayre

1

基本的に私があなたに求めていることは、次のとおりです。 ファイルをプログラムに読み込みます。
プログラムに各行を取り込み、すべての単語を列挙した文字列を生成させます。
SQL文を作成するためにフィールド名を保持する文字列とCREATE TABLE文を連結します。
SQLコマンドをSQL Serverに送信します。
私はあなたにこのアイデアをうまく​​実装するにはまだまだ新しいですが、あなたが探しているものと一致すれば、誰かにアイデアを与えてくれることを願っています。

2

ねえフランクは、私はちょうどあなたのFacebookのページでこれを書いたが、ここでは、再びです:あなたはこの単語に任意の列に名前を付けることができませんので

「条件」のMySQLの予約語です。 (少なくともMySQLの5.1のために)ここにリストをチェックしてください:

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

+0

+1:「条件」列の名前を変更すると、クエリが機能します。 –

0

これが機能する方法は、「ロード・データINFILE」を使用してデータベースにファイルをロードすることです。接頭辞が付いたすべての変数を置換x

mysql -uxuser -pxpass xdatabase -e "LOAD DATA INFILE '/tmp/xwordlist.cvs' INTO TABLE xtable FIELDS TERMINATED BY ',' (xcolname)" 
+0

著者は、名前付きの列を持つテーブルを作成する必要がありました。あなたのソリューションは、既存のデータをインポートするためのものです –

関連する問題