我有一个包含表格的数据库:人员,玩家,教练和团队。所有表都有一个自动增量id字段作为主键。人有id,firstname,lastname。玩家和教练都有id字段,以及person_id和team_id作为外键将它们绑定到其他表中的team.id或person.id字段。
现在为了完全填充这些表,我有几个csv文件,其中包含每个团队中玩家的名字列表。我可以编写一个bash或python脚本来获取这些数据,不仅可以输入人员表中的名称,还可以将适当的人员和团队ID值放入播放器表中吗?
如果问题不明确,请问我,我会尽我所能澄清。感谢。
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 :(得分:1)
使用ORM可能对您的目的而言过于苛刻,但如果您需要对数据进行实际操作,这会让您的生活变得轻松。它需要你安装一些软件,但如果你愿意学习一些新的东西,你可能会获得很多东西。幸运的是,开始使用它并不是很难,例如,使用Django:
./manage.py inspectdb
应该为您创建模型。使用./manage.py inspectdb > myapp/models.py
进行保存。export DJANGO_SETTINGS_MODULE=settings
以允许您从命令行脚本使用django 现在您可以这种方式创建import_players.py
脚本:
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/
答案 1 :(得分: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得到的。虽然该页面还涉及首先将Excel导出为CSV。