从csv文件创建表和关系

时间:2015-12-11 22:06:10

标签: mysql sql csv

我想从csv文件创建简单的MySQL表。我该怎么做呢?我正在使用MySQL Workbench(我刚开始学习SQL和MySQL)。

以下是我的csv文件:

foo.csv :1列(header =“foo_id”)和50,000多行。 foo_ids是字符串(少于25个字符)

foo_id
foo_1
foo_2
foo_3
foo_4
...
...
...

bar.csv :1列(header =“bar_id”)和100,000多行。 bar_ids是字符串(少于25个字符)

bar_id
bar_1
bar_2
bar_3
bar_4
...
...
...

foo_to_bar.csv :2列(headers =“foo_id”,“bar_id”)和70,000多行。 foo_idsbar_ids是字符串。假设来自foo_idsbar_ids的所有foo.csvbar.csv都不在foo_to_bar.csv

foo_id bar_id
foo_1  bar_2
foo_1  bar_3
foo_3  bar_4
foo_4  bar_5
foo_4  bar_6
foo_4  bar_7
...    ...
...    ...
...    ...

从这些csv文件中,我想创建一个foo表和bar表。 foo表包含所有foo_ids。由于foo_ids是字符串,因此最好还为每个primary_key添加一个自动增量foo_id列作为整数。

primary_key foo_id
1           foo_1
2           foo_2
3           foo_3
...         ...
...         ...
...         ...

bar表应与foo表类似,但附加列标记为foo_id。我希望在一对多映射关系中foo_idsbar_ids,其中一个foo_id可以映射到0,1或更多bar_ids

primary_key bar_id foo_id
1           bar_1  
2           bar_2  foo_1 (Should this display 'foo_1' or its primary key (1)?)
3           bar_3  foo_1
4           bar_4  foo_3
5           bar_5  foo_4
...         ...    ...
...         ...    ...
...         ...    ...

此外,使用这些表格,我是否可以从给定的bar_ids获取foo_id以及找到给定foo_id的{​​{1}}?

编辑:我目前正在使用bar_id从3个csv文件制作3个表。到目前为止,这是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以通过快速谷歌搜索在线获取csv到sql转换器。

还有人提到,您可以使用PhpMyAdmin或其他类似的软件将Csv文件导入到易于管理的表中。这需要访问网络服务器或本地主机,这需要为一些查询进行设置。

上述任一选项都足以将CSV文件解析为SQL。

编辑:

获取转换后的CSV文件并在文本编辑器中打开它。你会看到:

    CREATE TABLE mytable(
    filed1        INTEGER  NOT NULL PRIMARY KEY 
    ,field2          NUMERIC(16,11) NOT NULL
    ,field3 INTEGER  NOT NULL
    );
    INSERT INTO mytable(field1,filed2,field3) VALUES (1,2,3);
    INSERT INTO mytable(field1,filed2,field3) VALUES (4,5,6);
    INSERT INTO mytable(field1,filed2,field3) VALUES (7,8,9);
 etc

将其更改为:

    INSERT INTO mytable
       (filed1,field2,field3)
    VALUES
       (1,2,3),
       (4,5,6),
       (7,8,9);
    etc

如果您有大量条目,请使用查找和替换功能来节省一些打字...