Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从.csv文件向多个MySQL数据库表插入数据_Python_Mysql_Bash_Csv - Fatal编程技术网

Python 从.csv文件向多个MySQL数据库表插入数据

Python 从.csv文件向多个MySQL数据库表插入数据,python,mysql,bash,csv,Python,Mysql,Bash,Csv,我有一个数据库,里面有表:个人、球员、教练和团队。所有表都有一个自动递增id字段作为主键。此人有id、姓氏和姓氏。球员和教练都有id字段,以及person_id和team_id作为外键,将它们绑定到其他表中的team.id或person.id字段 现在,为了完全填充这些表,我有几个csv文件,其中包含每个团队中球员的名单。我是否可以编写bash或python脚本来获取这些数据,不仅将姓名输入到person表中,还可以将正确的person和team id值输入到player表中 如果问题不清楚,就

我有一个数据库,里面有表:个人、球员、教练和团队。所有表都有一个自动递增id字段作为主键。此人有id、姓氏和姓氏。球员和教练都有id字段,以及person_id和team_id作为外键,将它们绑定到其他表中的team.id或person.id字段

现在,为了完全填充这些表,我有几个csv文件,其中包含每个团队中球员的名单。我是否可以编写bash或python脚本来获取这些数据,不仅将姓名输入到person表中,还可以将正确的person和team id值输入到player表中

如果问题不清楚,就问吧,我会尽力澄清。谢谢

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-centralindians.csv)

对于您的目的来说,使用一个数据库可能是一种过分的手段,但是如果您需要对数据进行真正的处理,它会使您的生活变得轻松。这将需要你安装一些软件,但如果你愿意学习一些新的东西,你可能会得到很多。幸运的是,开始使用它并不困难,例如,使用Django:

  • 下载并安装django
  • 使用django admin startproject myproject创建新项目
  • 创建新应用程序:./manage.py startapp myapp
  • 在settings.py中更改数据库连接参数
  • /manage.py inspectdb
    应该为您创建模型。使用
    /manage.py inspectdb>myapp/models.py
    保存它
  • 执行
    export DJANGO\u SETTINGS\u 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

请参见此以了解如何使用模型:

您可以直接使用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)

我是从你那儿得到的。尽管该页面也首先处理将excel导出为CSV的问题。

答案是可以的。如果您发布一些代码和示例输入/输出,我们可能会进一步帮助您…好的,我在表的sql描述中添加了一些内容,以及csv内容
load data local infile 'AL-Central-Indians.csv' into table player
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(person_id, team_id)