0

我有两张桌子basketsfruits; abasket有很多不同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_1 苹果、芒果、香蕉、梨

Basket_2 芒果、草莓、李子、香蕉、葡萄

Baskt_3 覆盆子、苹果、梨

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

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

我的问题与此类似:Import Excel Data to Relational Tables at MySQL

但在数据上就不一样了。

欢迎所有建议!

4

1 回答 1

0

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

如果水果位于单独的单元格中,请使用 Excel 中的粘贴 - 转置工具将行转换为列,方法是将所有单元格复制到一张表中,然后使用特殊粘贴 - 转置将它们粘贴到新表中。

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

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

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

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

于 2013-10-08T20:22:12.033 回答