从CSV文件填充数据库(MySql)中的相关表的概念性过程

前端之家收集整理的这篇文章主要介绍了从CSV文件填充数据库(MySql)中的相关表的概念性过程 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我是关系数据库的新手,我读过的所有材料都覆盖了主键和外键,普通形式和联接,但是创建数据库后就不去填充它了.

您如何导入CSV文件,以便字段与它们的相关表匹配?

假设您要建立啤酒数据库,并拥有一个CSV文件,其中每一行都作为记录.

Header: brewer,beer_name,country,
city,state,beer_category,beer_type,
alcohol_content

Record 1: Anheuser-Busch,Budweiser,
United States,St. Louis,Mo,Pale lager,
Regular,
5.0%

Record 2: Anheuser-Busch,Bud Light,Pale lager
Light,4.2%

Record 3: Miller Brewing Company,
Miller Lite,United States,Milwaukee,
WI,Light,
4.2%

您可以创建“啤酒”表和“啤酒”表.导入时如何在表之间连接主键?

最佳答案
创建表时,可以定义主键和外键关系.设置好它们之后,您几乎可以忘记它们,除非您尝试执行违反关系的操作时数据库抛出错误.

例如,如果您尝试将一个记录添加到子(外部)表中,而该记录在父表中没有任何值,则如果关系建立正确,数据库将报错.

例如除非已添加记录1,否则将记录1添加到Beer表中将失败
Anheuser-Busch进入Brewers表.

有关设置表格的建议:

Brewer
    id         bigint
    name       varchar(50)
    country    varchar(50)
    state      varchar(10)
    city       varchar(50)


Beer
    id         bigint
    brewerId   bigint
    name       varchar(70)
    category   varchar(50)
    type       varchar(50)
    alcohol    decimal(3,1)

Set Brewer.Id as the Primary Key of the Brewer table.
Set Beer.Id as the Primary Key of the Beer table.
Then create a foreign key relationship between Brewer.Id = Beer.brewerId

然后手动添加冲泡器(因为其中没有太多)

Brewer
    1    Anheuser-Busch            United States    Mo    St. Louis
    2    Miller Brewing Company    United States    WI    Milwaukee

然后摆弄CSV文件,用酿酒商各自的ID替换所有酿酒商详细信息,并使用其填充Beer表:

Beer
    1    1    Budweiser    Pale lager    Regular    5.0
    2    1    Bud Light    Pale lager    Light      4.2
    3    2    Miller Lite  Pale lager    Regular    4.2

因此:brewerId将每个啤酒链接到Brewer表中的Brewer.那是外键-每个啤酒会自动获取所有啤酒商的详细信息,因为它的brewerId与啤酒商的ID相匹配(并且您在创建表格时就设置了该关系).

> Beer 1(Budweiser)属于Brewer 1(Anheuser-Busch)
>啤酒2(芽光)属于Brewer 1(安海斯-布希)
>啤酒3(米勒之光)属于Brewer 2(米勒)

这可以让您做得很酷.假设Miller被另一家公司收购…您要做的就是更改Brewer表中的详细信息,瞧-Miller拥有的所有啤酒现在都属于新啤酒厂.您还可以按Brewer,州等计算销售额.

基本的经验法则是,主键和外键就像是父子关系.子代存储父代的ID.这样,每个父母可以有多个孩子.它可能会使整个过程变得更加复杂,但这将为您提供大多数数据库解决方案的很好的入门方法.

猜你在找的MySQL相关文章