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

时间:2014-08-14 00:58:16

标签: mysql database excel

我有一个包含主键和四个外键的表。我正在使用的所有数据都在Excel电子表格中。我不确定将这些数据加载到我的数据库中的最佳方法。

对于其他一些表,我将我需要的Excel列导出为.csv文件,然后使用正则表达式将数据格式化为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中读取该类别并将其放入正确的{{1 }}。当我只有Excel表格中的文本数据时,我很困惑如何做到这一点。

有没有办法根据Category_ID中的数据检查文本,找到与文字匹配的ID,并相应更新Table 2中的行?

我一直在网上搜索,但我找不到任何可以使用的东西,但是我非常喜欢数据库,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

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

我假设您的CSV格式已正确形成,您可以使用mySQL的LOAD DATA INFILE函数将csv文件加载到SQL数据库中,如果您不使用mysql,您可能会为您的数据库系统找到类似的函数。

你需要首先创建限制数据的表结构,然后你应该用查询加载数据(不用担心,如果你不知道mysql引擎的默认路径,mySQL会在错误中给你消息)

LOAD DATA INFILE'path / YourCSVFILE.csv'INTO TABLE table OF FERMDS TEDINATED BY''LINEINATED BY'\ n';

请参阅下面的完整文档(根据您自己的csv格式进行调整) http://dev.mysql.com/doc/refman/5.1/en/load-data.html

所以经过大量尝试复杂的UPDATE JOIN查询没有成功,我找到了一个解决方案,通过你的问题。

创建一个包含所有数据而没有空ID类别的新表,如果您的表之间没有强大的链接,那么将其替换为新值

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

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

希望是帮助

此致

相关问题