将Excel CSV导入MySQL关系数据库?

时间:2013-10-08 19:13:43

标签: mysql excel csv

我有两张表basketsfruits; basket有许多不同的fruits因此它是一对多的关系。

表格如下:

baskets 
id NOT NULL PRIMARY KEY AUTO_INCREMENT,
basket_name varchar(20)

fruits 
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
fruit_name varchar(20),
basket_id INT FOREIGN KEY REFERENCES baskets(id)

我有一个Excel表格,列名和数据组织如下:

Basket Fruits 

Basket_1 Apple, Mango, Banana, Pear

Basket_2 Mango, Strawberry, Plums, Banana, Grapes

Baskt_3 Raspberry, Apple, Pear

在上面建模的关系架构中,将所有这些水果存储在一个篮子中的最佳方法是什么?

我已经将我的XLS文件转换为CSV以便使用脚本(在Ruby中)进行更好的解析,并发现该表已经搞砸了,因此每个水果现在位于一个单独的单元格中,并且单元格的单元格数量不同(在电子表格中的一行)。

我的问题是与此相似的一些内容:Import Excel Data to Relational Tables at MySQL

但数据不一样。

欢迎所有建议!

1 个答案:

答案 0 :(得分:0)

这些问题似乎总是需要采取相当多的步骤。

如果水果位于单独的单元格中,请使用Excel中的粘贴转置工具通过复制一个工作表中的所有单元格然后使用粘贴特殊转置将行粘贴到新工作表中来将行转换为列。

在第三张表格中,我将制作一个公式,将第二行中的每个单元格的值与第一行中的值连接起来。如果sheetA具有新转换的值,并且sheetB是新工作表,则公式将为=sheetA!a$1 & "," & sheetA!a2,并从a2:zz999复制该公式或者它需要走多远。

然后需要连接列,可以手动完成,也可以在导入工作表后通过Mysql中的UNION语句连接:

SELECT COLUMN1 FROM SHEETB
UNION
SELECT COLUMN2 FROM SHEETB
UNION
...

你明白了。一旦组合的篮子 - 果实区域在一列中,就很容易分成两列。

相关问题