首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CSV文件中在数据库(MySql)中填充相关表的概念过程

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

Stack Overflow用户
提问于 2010-04-21 23:59:05
回答 1查看 390关注 0票数 3

我是关系数据库的新手,我读过的所有材料都涵盖了主键和外键、普通形式和联接,但是在数据库创建之后,我忽略了填充数据库。

如何导入CSV文件,使字段与其相关表匹配?

假设您正在绑定以构建一个啤酒数据库,并有一个CSV文件,每一行都作为记录。

标题: brewer,beer_name,country,city,state,beer_category,beer_type,alcohol_content

记录1:安海斯-布希,百威,美国,圣路易斯,莫,淡啤酒,普通,5.0%

记录2: Anheuser-Busch,Bud Light,United States,St. . Louis,Mo,Pale lager,4.2%

记录3: Miller Brewing Company,Miller Lite,United States,Milwaukee,WI,Pale lager,Light,4.2%

您可以创建"Brewer“表和"Beer”表。导入时,如何在表之间连接主键?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-22 01:17:32

创建表时定义主键关系和外键关系。一旦它们被设置好,您就可以忘记它们了,除非如果您试图做一些违反关系的事情,数据库会抛出一个错误。

例如,如果试图将记录添加到父表中没有值的子表(外文)表中,则如果正确设置关系,数据库将发生故障。

例如,向Beer表中添加Record 1将失败,除非您已经将Anheuser添加到Brewers表中。

关于摆桌子的建议:

代码语言:javascript
复制
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

然后手动添加啤酒厂(因为他们不多)

代码语言:javascript
复制
Brewer
    1    Anheuser-Busch            United States    Mo    St. Louis
    2    Miller Brewing Company    United States    WI    Milwaukee

然后修改您的CSV文件,将所有酿酒器详细信息替换为该酿酒者各自的id,并使用该id填充您的Beer表:

代码语言:javascript
复制
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将每一瓶啤酒链接到啤酒桌中的啤酒酿造商。这是外键--每个啤酒都会自动获得所有啤酒酿造者的详细信息,因为它的brewerId与酿酒者的id相匹配(并且在创建表时设置了这种关系)。

啤酒1(百威啤酒)属于啤酒1 (Anheuser-Busch)

  • Beer 2(芽轻)属于啤酒1 (Anheuser-Busch)

  • Beer 3(米勒光)属于啤酒2(米勒)

这让你做得很酷。说米勒是被另一家公司买下的。你所要做的就是改变酿酒桌上的细节,瞧--米勒拥有的所有啤酒现在都属于新的酿酒商。你也可以按布鲁尔、州等来计算销售额。

基本的经验法则是,主键和外键就像父子关系。孩子储存父母的身份证。这样,每个父母都可以有多个孩子。它可能会变得复杂得多,但这将给您提供一个非常好的启动方法,您的大多数数据库解决方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2687359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档