将这些数据加载到MySQL的最佳方法

我有一个表有一个主键和四个外键。 我使用的所有数据都在Excel电子表格中。 我不知道最好的方式去加载这个数据到我的数据库。

对于其他一些表格,我将所需的Excel列导出为.csv文件,然后使用正则expression式将数据格式化为INSERT语句。

我使用的主表是这样的:

 Table 1 ---------------------------------------------------- | ID | Text | category_ID | f2 |f3 | ---------------------------------------------------- | 1 | Foo | NULL | NULL |NULL | | 2 | Bar | NULL | NULL |NULL | ---------------------------------------------------- 

下一张表是这样的:

 Table 2 ----------------------- | ID | Category | ----------------------- | 1 | CatFoo | | 2 | CatBar | ----------------------- 

而我的Excel是这样的:

 Excel --------------------------------- | ID | Text | category | --------------------------------- | 1 | Foo | CatFoo | | 2 | Bar | CatFoo | | 3 | What | CatBar | --------------------------------- 

我的目标是表1中的Category_ID字段从表2中获取给定类别的ID号。为此,我需要从Excel中读取类别,并input正确的Category_ID 。 我很困惑如何才能做到这一点,当我只有来自Excel工作表的文本数据。

有没有办法根据Table 2中的数据检查文本find与文本匹配的ID,并相应地更新Table 1的行?

我一直在网上search,还没有find任何我可以使用,但是我非常初学数据库,所以任何帮助表示赞赏。

你应该做的第一件事是把你所有的数据加载到同一个数据库中。

我假设你的CSV格式是正确的,你可以用mySQL的LOAD DATA INFILE函数把csv文件加载到你的SQL数据库中,如果你不使用mysql,你可能会为你的数据库系统find一个类似的函数。

你需要先创build一个限制数据的表结构,然后你应该用查询加载你的数据(如果你不知道mysql引擎的默认path,mySQL会在错误信息中给你)

LOAD DATA INFILE'path / YourCSVFILE.csv'INTO TABLE您的表格FIELDS TERMINATED BY''LINES TERMINATED BY'\ n';

看下面的完整文档(调整为你自己的CSV格式) http://dev.mysql.com/doc/refman/5.1/en/load-data.html

所以经过很多尝试复杂的UPDATE JOIN查询没有成功,我find了一个解决scheme,通过你的问题。

创build一个新的表,其中包含所有没有空白标识类别的数据,并将其replace为新值如果您的表格之间没有强关联

CREATE TABLE结果SELECT table1.id,table1.text,table2.id as id_category,f1,f2FROM table1INNER JOIN excel ON excel.text = table1.textINNER JOIN table2 ON table2.category = excel.category

我把所有的表格字段放在小写字母中,对我来说更容易。

希望这是帮助

问候