2011-06-22 12 views
3

私はテーブルを持つデータベースを持っています:人、プレーヤー、コーチ、チーム。すべてのテーブルには、プライマリキーとして自動増分IDフィールドがあります。 Personにはid、firstname、lastnameがあります。プレーヤーとコーチの両方はidフィールドとperson_idとteam_idを外部キーとして持っていて、他のテーブルのteam.idまたはperson.idフィールドにそれらを結び付けます。.csvファイルから複数のMySQLデータベーステーブルにデータを挿入

これらのテーブルを完全に埋めるために、各チームの選手の名前のリストを含む複数のcsvファイルがあります。このデータを取得し、名前を人物表に入力するだけでなく、適切な人物とチームIDの値をプレーヤー表に入れるために、bashまたはpythonスクリプトを記述できますか?

質問が明確でない場合は、尋ねてください。私が明確にできることをします。ありがとう。

mysql> describe person; 
+-----------+-------------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+-----------+-------------+------+-----+---------+----------------+ 
| id  | int(11)  | NO | PRI | NULL | auto_increment | 
| firstname | varchar(30) | NO |  | NULL |    | 
| lastname | varchar(30) | NO |  | NULL |    | 
+-----------+-------------+------+-----+---------+----------------+ 
mysql> describe player; 
+-----------+---------+------+-----+---------+----------------+ 
| Field  | Type | Null | Key | Default | Extra   | 
+-----------+---------+------+-----+---------+----------------+ 
| id  | int(11) | NO | PRI | NULL | auto_increment | 
| person_id | int(11) | NO | MUL | NULL |    | 
| team_id | int(11) | NO | MUL | NULL |    | 
+-----------+---------+------+-----+---------+----------------+ 
mysql> describe team; 
+-----------+-------------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+-----------+-------------+------+-----+---------+----------------+ 
| id  | int(11)  | NO | PRI | NULL | auto_increment | 
| teamname | varchar(25) | NO |  | NULL |    | 
| location | varchar(40) | NO |  | NULL |    | 
| city  | varchar(25) | NO |  | NULL |    | 
| state  | varchar(2) | NO |  | NULL |    | 
| venue  | varchar(35) | NO |  | NULL |    | 
| league_id | int(11)  | NO | MUL | NULL |    | 
+-----------+-------------+------+-----+---------+----------------+ 

そしてここでは、CSVファイルの内容の例である: (AL-中央-Indians.csv)

Fausto,Carmona 
Carlos,Carrasco 
Kelvin,De La Cruz 
Chad,Durbin 
+0

答えははいです。いくつかのコードとサンプルの入出力を投稿すると、私たちはさらにあなたを助けることができるかもしれません... –

+0

私はテーブルのSQLの説明だけでなく、csvの内容を追加 – cfrederich

答えて

1

次のようにmysqlコマンドを使用して直接行うことができます。

load data local infile 'AL-Central-Indians.csv' into table player 
fields terminated by ',' 
enclosed by '"' 
lines terminated by '\n' 
(person_id, team_id) 

私はhereからそれを得ました。このページでは、輸出を扱っているが、まずCSVに秀でている。

1

あなたの目的のためにやり過ぎかもしれないORMを使用して、それはあなたを作りますあなたがデータで実際の仕事をする必要があるならば、簡単に人生を送ることができます。いくつかのソフトウェアをインストールする必要がありますが、いくつかの新しいものを学びたい場合は、おそらく多くの道を譲るでしょう。幸いにも、ジャンゴを使用して、例えば、それを使用して起動することは非常に難しいことではありません。

  • ダウンロードとDjango
  • をインストールジャンゴ管理者startprojectののmyprojectに
  • を使用して新しいプロジェクトを作成します。新しいアプリを作成します。 /manage.py startapp myapp
  • settings.pyのデータベース接続パラメータを変更してください
  • ./manage.py inspectdbモデルを作成する必要があります。保存するには./manage.py inspectdb > myapp/models.pyを使用してください。
  • 今、あなたはこの方法でimport_players.pyスクリプトを作成することができますが、コマンドラインスクリプト

からジャンゴを使用できるようにexport DJANGO_SETTINGS_MODULE=settingsを実行します。

from myapp.models import Player, Person, Coach, Team 
for my_file in my_files: # TODO: Iterate through your files 
    team = Team.objects.create(name=my_team_name) # creates a db record for a team 
    for line in lines_in_my_file: # TODO: Iterate through lines in your file 
     player = Player.objects.create(name=my_player_name, team=team) creates a db record for a player 

は、モデルで作業する方法を学ぶために、これを参照してください:https://docs.djangoproject.com/en/dev/topics/db/models/

関連する問題